iOS 7上的矩形UISearchBar

时间:2014-02-11 07:32:21

标签: ios objective-c uiview ios7 uisearchbar

我正在尝试制作一个UISearchBar矩形而不是四舍五入,但到目前为止我找到的所有解决方案(主要是通过子视图进行迭代)在iOS 7上都显示出来了。

我自己做了一些研究,事实证明,它只有一个UIView子视图,其中包含其他子视图,UISearchBarBackgroundUISearchBarTextField(两者都是私有类)。 我试过了

if ([view isKindOfClass:NSClassFromString(@"UISearchBarBackground")]) {
    [view removeFromSuperview];
}

if ([view conformsToProtocol:@protocol(UITextInputTraits)]) {
    @try {

        [(UITextField *)view setBorderStyle:UITextBorderStyleRoundedRect];
    }
    @catch (NSException * e) {
        // ignore exception
    }
}

其中view是该UIView子视图的子视图,但它们似乎都不起作用。

2 个答案:

答案 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];
        }
    }
}