自定义外观时,为什么UISearchBar中的“取消”按钮伸出?

时间:2013-09-05 19:55:06

标签: iphone ios cocoa uisearchbar uibarbuttonitem

我的UISearchBar的{​​{1}}中有一个简单的titleView

search bar

当用户开始搜索时,会显示“取消”按钮:

UINavigationBar

看起来像这样:

cancel button

现在我想自定义外观并使用不同的取消按钮:

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
    [searchBar setShowsCancelButton:YES animated:YES];
    return YES;
}

结果如下:

customized appearance

我的自定义取消按钮宽约60像素但不知何故被拉伸到超过80像素。 id appearance = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil]; [appearance setTitle:@""]; [appearance setBackgroundImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [appearance setBackgroundImage:[UIImage imageNamed:@"cancel_pressed.png"] forState:UIControlStateSelected barMetrics:UIBarMetricsDefault]; 的文档确实提到“为了获得好的结果,backgroundImage必须是一个可伸缩的图像”,但是取消按钮占据那么多屏幕空间感觉就像浪费一样(特别是因为我想添加一个左栏项目也是如此)。

我可以通过迭代子视图解决这个问题,但我更喜欢使用外观代理方法。所以问题是为什么一旦你定制它的外观,取消按钮会变得更宽。

0 个答案:

没有答案