UISearchBar在ios11上的placeHolder和icon默認居左了危融。挖胃。。
SearchBar-left.png
下面是實現(xiàn)的居中的效果:
SearchBar-Center.png
實現(xiàn)方法坞古,自定義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];
}
// 實現(xiàn)textfield的代理方法
// 開始編輯的時候重置為靠左
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
// 繼續(xù)傳遞代理方法
if ([self.delegate respondsToSelector:@selector(searchBarShouldBeginEditing:)]) {
[self.delegate searchBarShouldBeginEditing:self];
}
if (@available(iOS 11.0, *)) {
[self setPositionAdjustment:UIOffsetZero forSearchBarIcon:UISearchBarIconSearch];
}
return YES;
}
// 結(jié)束編輯的時候設置為居中
-(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;
}
這樣效果就和ios11以前一樣的效果了备韧。。
完整代碼下載