我的UISearchBar
的{{1}}中有一个简单的titleView
:
当用户开始搜索时,会显示“取消”按钮:
UINavigationBar
看起来像这样:
现在我想自定义外观并使用不同的取消按钮:
- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
{
[searchBar setShowsCancelButton:YES animated:YES];
return YES;
}
结果如下:
我的自定义取消按钮宽约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必须是一个可伸缩的图像”,但是取消按钮占据那么多屏幕空间感觉就像浪费一样(特别是因为我想添加一个左栏项目也是如此)。
我可以通过迭代子视图解决这个问题,但我更喜欢使用外观代理方法。所以问题是为什么一旦你定制它的外观,取消按钮会变得更宽。