UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度
Posted
技术标签:
【中文标题】UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度【英文标题】:UISearchBar in UINavigationBar changes width when rotating orientation 【发布时间】:2012-05-16 11:11:12 【问题描述】:这快把我逼疯了。我正在 iPad 上创建一个拆分视图应用程序。
我在 UINavigationBar 内创建了一个 searchBar - 类似这样...
UISearchBar *searchBar = [[UISearchBar alloc] initWitFrame:CGRectZero];
[searchBar setPlaceHolder:@"Search"];
[searchBar sizeToFit];
[searchBar setDelegate:self];
[self.navigatioItem setTitleView:searchBar];
这对我这样显示 UISearchBar 来说效果很好......
我还设置了这个 UIBarButtonItem 以在侧窗格中显示主导航控制器。
当设备旋转到横向并且 UIBarButtonItem 被隐藏时,就会出现问题。然后searchBar就出现了这样...
由于 barButtonItem 被隐藏并且无法更新搜索栏的大小,因此两侧似乎存在一些空间。
此外,当我再次旋转设备时,UISearchBar 会发生以下情况
搜索栏添加到 UINavigationBar 后如何更新其大小。即使使用 autoResizingMask 也不起作用。
searchBar.autoResizingMask =UIViewAutoresizingFlexibleWidth;
我在这里做错了什么?
【问题讨论】:
【参考方案1】:我也遇到了同样的问题(不是搜索栏,而是一些 UIView),我就是这样解决的:
尝试使用不会改变的固定大小创建它。我的意思是,如果您的导航栏最小尺寸是(例如)320pt,而 barbutton 大约是 30pt,并且您需要将搜索栏放在中间(顺便说一句,这不是标准的,AFAIK),您必须将其设为 320 - (30+10)*2 = 240 点。搜索栏将被放置在中间,并且将有足够的空闲空间。
这样既不会改变它的大小,也不会影响其他项目。
或者我建议你把它放在正确的位置,而不是在中间。
希望对您有所帮助。
【讨论】:
以上是关于UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度的主要内容,如果未能解决你的问题,请参考以下文章
带有 UINavigationController 的独立 UINavigationBar 中的后退按钮
iOS 4 中的 UINavigationBar 色调颜色闪烁