1

我正在寻找一种获取UISearchBar的方法,使用不同的背景和文本颜色,并且没有边框。更改UISearchBar文本字段的borderStyle

我已经这样做:

[[[self.searchBar subviews] objectAtIndex:0] setAlpha:0.0]; 
UITextField* searchField = nil; 
for(int i = 0; i < self.searchBar.subviews.count; i++) { 
    if([[self.searchBar.subviews objectAtIndex:i] isKindOfClass:[UITextField class]]) { //conform? 
     searchField = [self.searchBar.subviews objectAtIndex:i]; 
    } 
} 
if(searchField) { 
    searchField.backgroundColor = [UIColor colorWithRed:253.0/255.0 green:242.0/255.0 blue:210.0/255.0 alpha:1.0]; 
    searchField.textColor = [UIColor colorWithRed:98.0/255.0 green:65.0/255.0 blue:48.0/255.0 alpha:1.0]; 
    searchField.borderStyle = UITextBorderStyleNone; 
} 

但是我正在寻找一种方式来改变UISearchBar的文本字段的borderStyle。我也想删除放大镜按钮。这是一种做这些修改的方法吗?

回答

1

您可以使用外观API来代替搜索栏的视图层次结构。看看"Customizing Appearance" in the docs

+0

我尝试使用与UIAppearance这样做'[NSClassFromString(@ “UISearchBarTextField”)appearanceWhenContainedIn:的UISearchBar类],无] setBorderStyle:UITextBorderStyleNone]' ,但它似乎不起作用。我错过了什么? – 2013-08-27 17:43:15

+0

@BrandonFosdick没有'UISearchBarTextField'这样的东西。而不是'NSClassFromString',直接在类上调用'appearanceWhen..'。 – 2013-08-27 18:15:57

0

在斯威夫特,你可以使用这个:

let txtField = UITextField.appearanceWhenContainedInInstancesOfClasses([UISearchBar.self]) 
txtField.borderStyle = .None