1. 程式人生 > >【OC】適配iOS11.0 UISearchBar placeholder 不居中顯示的問題

【OC】適配iOS11.0 UISearchBar placeholder 不居中顯示的問題

實現方法,自定義UISearchBar//  placeholder 和icon 和 間隙的整體寬度
// @property (nonatomic, assign) CGFloat placeholderWidth;

//  在layoutSubviews裡預設先居中
if (@available(iOS 11.0, *)) {
        [self setPositionAdjustment:UIOffsetMake((field.frame.size.width-self.placeholderWidth)/2, 0) forSearchBarIcon:UISearchBarIconSearch];
 } 

// 實現textfield的代理方法
// 開始編輯的時候重置為靠左 -(BOOL)textFieldShouldBeginEditing:(UITextField *)textField { // 繼續傳遞代理方法 if ([self.delegate respondsToSelector:@selector(searchBarShouldBeginEditing:)]) { [self.delegate searchBarShouldBeginEditing:self]; } if (@available(iOS 11.0, *)) { [self setPositionAdjustment:UIOffsetZero forSearchBarIcon:UISearchBarIconSearch]; } return
YES; } // 結束編輯的時候設定為居中 -(BOOL)textFieldShouldEndEditing:(UITextField *)textField { if ([self.delegate respondsToSelector:@selector(searchBarShouldEndEditing:)] { [self.delegate searchBarShouldEndEditing:self]; } if (@available(iOS 11.0, *)) { [self setPositionAdjustment:UIOffsetMake((textField.frame
.size.width-self.placeholderWidth)/2, 0) forSearchBarIcon:UISearchBarIconSearch]; } return YES; }