【OC】適配iOS11.0 UISearchBar placeholder 不居中顯示的問題
阿新 • • 發佈:2019-01-06
實現方法,自定義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;
}