我正在尝试显示UISearchBar来代替UINavigationItem右侧显示的按钮。我正在使用此代码:
- (void)viewDidLoad {
[super viewDidLoad];
UISearchBar *searchBar = [[UISearchBar alloc] init];
UIBarButtonItem *navRight = [[UIBarButtonItem alloc] initWithCustomView:searchBar];
[[self navigationItem] setRightBarButtonItem:navRight];
[searchBar release];
[navRight release];
}
但是,显示的搜索栏只有几个像素宽。我需要把它扩大。
我是以错误的方式来做这件事的吗?它有可能吗?
答案 0 :(得分:2)
您需要在某个时刻设置UISearchBar的框架。
e.x。
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 200, 20)];
编辑:关于UISearchBar
下的按钮式工件
您在UISearchBar
下看到的按钮实际上是UISearchBar
的背景元素,而不是搜索栏与UIBarButtonItem
重叠的结果。由于似乎没有一种很好的方法可以隐藏这个(我希望有人能够出现并纠正我),我只能指向一个hack的方向,它伴随着SDK的常见风险版本依赖,不优雅,以及更多头痛的可能性。
编辑2:另一种可能的解决方案
您还可以将UISearchBar的框架高度设置为44(导航栏的高度),然后背景应与导航栏很好地融合。基于我最近看到的this SO帖子。