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 色调颜色闪烁

UINavigationBar中的分段控件奇怪的截图iOS

UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度

IOS7 中的 UINavigationBar/状态栏问题

UITableView 中的顶部单元格隐藏在 UINavigationBar 后面