我正在尝试制作一个UISearchBar
矩形而不是四舍五入,但到目前为止我找到的所有解决方案(主要是通过子视图进行迭代)在iOS 7上都显示出来了。
我自己做了一些研究,事实证明,它只有一个UIView
子视图,其中包含其他子视图,UISearchBarBackground
和UISearchBarTextField
(两者都是私有类)。
我试过了
if ([view isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
[view removeFromSuperview];
}
和
if ([view conformsToProtocol:@protocol(UITextInputTraits)]) {
@try {
[(UITextField *)view setBorderStyle:UITextBorderStyleRoundedRect];
}
@catch (NSException * e) {
// ignore exception
}
}
其中view
是该UIView
子视图的子视图,但它们似乎都不起作用。
答案 0 :(得分:1)
您可以像这样设置searchfield-background:
[self.searchBar setSearchFieldBackgroundImage:[[UIImage imageNamed:@"searchbar_stretch-0-10-0-10"]resizableImageWithCapInsets:UIEdgeInsetsMake(0, 10, 0, 10)] forState:UIControlStateNormal];
和搜索栏背景如下:
[self.searchBar setBackgroundImage:[UIImage imageNamed:@"categories_navbar"]];
答案 1 :(得分:1)
试试这个......(我知道它也在使用子视图,但它在ios7中工作)
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 20, 320, 49)];
[self.view addSubview:searchBar];
[self checkSubViewsOfView:searchBar WithTabIndex:@""];
并添加此方法
-(void)checkSubViewsOfView:(UIView *)view WithTabIndex:(NSString *)strTab
{
if ([view isKindOfClass:NSClassFromString(@"UISearchBarTextField")])
{
view.layer.borderWidth = 1;
view.layer.borderColor = [[UIColor whiteColor] CGColor];
return;
}
for (UIView *vvv in view.subviews)
{
NSLog(@"%@%@",strTab,[vvv description]);
if (vvv.subviews > 0)
{
NSString *str = [NSString stringWithFormat:@"____%@",strTab];
[self checkSubViewsOfView:vvv WithTabIndex:str];
}
}
}