如何在UINavigationItem的右侧显示UISearchBar?
问题描述:
我想显示一个UISearchBar来代替UINavigationItem右侧显示的按钮。我正在使用此代码:如何在UINavigationItem的右侧显示UISearchBar?
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] init];
UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
[[self navigationItem] setRightBarButtonItem:navRight];
[searchBar release];
[navRight release];
}
但是,显示的搜索栏只有几个像素宽。我需要把它扩大。
我该怎么做呢?这是否可能?
答
您需要在某个时刻设置UISearchBar的帧。
e.x.
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)];
编辑:关于你下UISearchBar
看到UISearchBar
按钮-Y的事情下的按钮式的神器实际上是UISearchBar
的背景元素,搜索没有结果酒吧重叠UIBarButtonItem
。由于似乎没有一种很好的方法可以隐藏这个(我希望有人可以一起来纠正我),所以我只能指出你的方向,即伴随着SDK版本依赖的常见危险hack,不雅,并有可能导致更多的头痛。
编辑2:另一个潜在的解决方案
您还可以设置您的UISearchBar的框架的高度,以44(导航栏的高度),然后背景应该与导航栏很好地融为一体。基于this最近看到的SO帖子。
+0
谢谢!堆栈溢出岩石。有什么办法隐藏它下面的按钮? – Ovesh 2011-01-27 07:31:25
您可以通过使用CGFrame定义一个框架来更改UIBarButtonItem的宽度,或者如果可能的话添加使用IB – Robin 2011-01-27 07:21:13