我想知道如何将默认的圆形UISearchBar更改为矩形。请参考以下图片:
for (UIView *searchBarSubview in [mySearchBar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
@catch (NSException * e) {
// ignore exception
}
}
}
Swift 4:
mySearchBar.subviews().forEach { searchBarSubview in
if searchBarSubview is UITextInputTraits {
do {
(searchBarSubview as? UITextField)?.borderStyle = .roundedRect
} catch {
// ignore exception
}
}
}
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
txfSearchField.borderStyle = UITextBorderStyleNone;
为您的TextField添加背景图、左侧视图和右侧视图非常简单。
下面是一个示例:
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 10., nameField.bounds.size.height)];
nameField.leftView = leftView;
nameField.leftViewMode = UITextFieldViewModeAlways;
leftView release];
UISearchBar有圆形曲线,如果你想要将其变成矩形,你需要使用自定义搜索栏,并使用矩形图像(类似于搜索栏)、1个UIButton和UITextField,以及你自己的搜索逻辑。
UITextField * x = (UITextField*)searchBarSubview;
x.background = nil;
@Keller,感谢您提供寻找控件的提示。
UIView
:view.layer.cornerRadius=10;
view.layer.borderWidth=8;
view.layer.borderColor=[UIColor blackColor].CGColor;
textField.clearButtonMode= UITextFieldViewModeAlways;
希望这可以帮助到您。
Swift 3
let textFieldInsideUISearchBar = searchBar.value(forKey: "searchField") as? UITextField
textFieldInsideUISearchBar?.borderStyle = .none
textFieldInsideUISearchBar?.backgroundColor = UIColor.white
你能试试这个吗。
for (UIView *searchBarSubview in [search_bar subviews]) {
if ([searchBarSubview conformsToProtocol:@protocol(UITextInputTraits)]) {
if([searchBarSubview isKindOfClass:[UITextField class]])
{
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
}
}
}
[(UITextField *)searchBarSubview setBorderStyle:UITextBorderStyleRoundedRect];
- Joe Masilotti[[UITextField appearanceWhenContainedInInstancesOfClasses:@[[UISearchBar class]]] setBorderStyle:UITextBorderStyleRoundedRect];
。 - mattsson