ios - UISearchController 不能与非半透明的 UINavigationBar 一起正常工作

标签 ios cocoa-touch uikit uinavigationbar uisearchcontroller

目前我正在尝试将 UISearchController 嵌入到我的应用程序中。但是,如果 UINavigationBar 是非半透明的,则作为 UISearchController 属性的 UISearchBar 无法正确显示。通常在点击 UISearchBar 属性后,UINavigationBar 会向上移动以为 UISearchBar 腾出空间。您可以在以下屏幕截图中看到结果:

https://www.dropbox.com/s/172k63zr2bhj84t/Normal_behaviour.png?dl=0

但是如果 UINavigationBar 的“半透明”属性设置为“NO”,则 UISearchBar 无法正确显示,因为状态栏的背景仍然是透明的,如您在以下屏幕截图中所见:

https://www.dropbox.com/s/v5cnxoj9ms6976r/Wrong_behaviour.png?dl=0

为了演示这种奇怪的行为,我修改了 Apple 提供的示例项目:

https://developer.apple.com/library/ios/samplecode/TableSearch_UISearchController/Introduction/Intro.html

在这里你可以下载修改后的版本:

https://www.dropbox.com/s/7icfe6kap98g1e8/TableSearchwithUISearchControllerObj-CandSwift_MODIFIED.zip?dl=0

修改在文件“APLMainTableViewController.m”第 33 行。

最佳答案

这显然是一个错误 ( rdar://20942583 )。

我的解决方法是设置

self.edgesForExtendedLayout = UIRectEdgeAll;
self.extendedLayoutIncludesOpaqueBars = YES;

这允许您保持导航栏不透明。不利之处在于,即使看不到内容,内容也会在栏下方流动,从而产生一些开销。

关于ios - UISearchController 不能与非半透明的 UINavigationBar 一起正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369239/

相关文章:

ios - 根据tableView的高度设置动态的View高度

iphone - 两行 UISegmentedControl

swift - UIView 中神秘的 UIColor 行为以及 Swift 中的一般情况

ios - Swift-使用委托(delegate)在 tableView 上显示

ios - 如何检查TextView是否为空?

ios - 使用 json 数据填充 tableView

iphone - 如果返回否,MFMailComposeViewController canSendMail 更改警报

objective-c - 如何获得 UIImageView 的图形上下文?

ios - 在 viewDidLoad 处将可调整大小的 UIImage 设置为 UIImageView 被忽略

ios - 如何更改 UIKit 中的 SF Symbol 图标颜色?