iOS 6中的UISearchBar取消按钮问题

时间:2014-04-18 18:04:37

标签: ios7 ios6 uisearchbar

我正在使用UISearchBar,但我在iOS 6中的取消按钮中遇到问题,这在iOS 7中运行良好

FOR IOS 6 适用于iOS 6

FR IOS 7 适用于iOS 7

[[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:whiteColor];

在iOS 7中,Button的边框不显示。只有“取消”用白色写。 在iOS 6中,带有边框的Button显示整个背景也是白色。请帮忙。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望按钮的背景透明且没有边框。如果是这样,我想我找到了一个解决方案:

对于iOS6:
您必须将backgroundImage属性设置为具有透明背景的图像。 例如,您可以使用UIImage创建的[UIColor clearColor]对象来执行此操作。

对于iOS7:
只是改变一下,但tintColor:)


怎么做?

首先,我使用了一个方法:LINK,但稍微改变了一下:

- (UIImage *)imageWithColor:(UIColor *)color andSize:(CGSize)size
{
    CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}


然后在viewDidLoad中写道:

if ([[[UIDevice currentDevice] systemVersion] doubleValue] < 7.0) {
        [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setBackgroundImage:[self imageWithColor:[UIColor clearColor] andSize:CGSizeMake(30.f, 40.f)] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    } else {
        [[UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil] setTintColor:[UIColor whiteColor]];
    }


我希望它能解决你的问题:)