我的应用程序通过plist条目隐藏了状态栏+ appdelegate中的这个:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[application setStatusBarHidden:YES];
加载视图后,状态栏将被隐藏。只要我点击并将焦点放在搜索栏上,状态栏就会显示出来。当搜索栏失去焦点时,状态栏会再次消失。
当搜索栏有焦点时,如何防止状态栏出现?
答案 0 :(得分:3)
发生在我身上!! 我在info.plist中有“状态栏最初隐藏”,还有func(在我的情况下是swift):
override func prefersStatusBarHidden() -> Bool {
return true;
}
但是当我点击搜索栏时,状态栏就会显示为ZJones所说的。
我在info.plist中添加了以下条目:
“查看基于控制器的状态栏外观”为“否”
容易但很难找到!!
来自Apple文档:
iOS 7为视图控制器提供了调整样式的能力 应用程序运行时的状态栏。改变状态的好方法 动态栏式是实现preferredStatusBarStyle 和 - 在动画块中 - 更新状态栏外观和 call setNeedsStatusBarAppearanceUpdate。
请注意
如果您希望选择不让视图控制器调整状态 bar样式 - 而是使用。设置状态栏样式 UIApplicationstatusBarStyle方法 - 添加 UIViewControllerBasedStatusBar应用程序的Info.plist的外观键 文件,并给它值NO。
我希望它适合你!
答案 1 :(得分:3)
当在父控制器上点击搜索栏时,对如何呈现(隐藏/显示)状态栏的控制将被提供给搜索控制器。
设置"查看基于控制器的状态栏外观"在info.plist中为NO工作到一定程度,防止在点击搜索时出现状态栏,尽管这样状态栏也不会出现在其他视图控制器上;不受欢迎的行为。
相反,我认为对UISearchController子类更加准确,并在那里覆盖prefersStatusBarHidden方法。 (我还保留了#34;查看基于控制器的状态栏外观"在info.plist中设置为YES。)
所以:
@implementation MySearchController
// Override so it does not show the status bar when active
- (BOOL)prefersStatusBarHidden {
return YES;
}
...
@end
在呈现控制器内:
_searchController = [[MySearchController alloc] initWithSearchResultsController:nil];