111
|
Andrew Smith · 技术社区 · 11 年前 |
![]() |
1
281
我发现,如果您的ViewController位于navigationController中,则navigationControllers
设置导航栏
笔记
即使您通过其
|
![]() |
2
88
好吧,这是诀窍。您必须添加“查看基于控制器的状态栏”键,并将该值设置为“否”。
这与该键的含义相反,但即使将值设置为
现在我可以将状态栏设置为白色或深色。 |
![]() |
3
77
对于
对于 雨燕3 这些不是方法,而是财产:
这个 雨燕4.2 财产已重命名:
用法
|
![]() |
4
33
我可能会来晚一点,但以防其他人正在寻找一个有效且经过验证的应用范围解决方案。 @mxcl在描述为什么会发生这种情况时是正确的。为了纠正它,我们只需创建一个扩展(或obj-c中的类别),它覆盖UINavigationController的preferredStatusBarStyle()方法。以下是Swift中的一个例子:
这段代码只是提取第一个视图控制器(根视图控制器)并打开它(在obj-c中,只检查它是否为nil)。如果打开成功(不是零),那么我们获取rootViewControllers preferredStatusBarStyle。否则,我们只返回默认值。 希望这能帮助到任何可能需要它的人。 |
![]() |
5
21
要为已接受的答案提供更多详细信息,请在应用程序代表的
然后,在您的Info.plist中,添加
我相信,如果你想让整个应用程序的状态栏颜色相同,就应该这样做,而不是从导航控制器。您的屏幕可能不一定嵌入
编辑 :您也可以在不键入任何代码的情况下执行此操作: https://stackoverflow.com/a/18732865/855680 |
![]() |
6
10
在视图中DidLoad只需写下以下内容
只要这样做就会奏效 你能试试这个吗
我在你的问题中看到的另一件事是 你写的方法是这样的
但应该是这样
|
![]() |
7
9
iOS 13解决方案投票率最高的答案使用“遗留”代码
设置
关于你的尝试-你走在了正确的轨道上!
因此,当呈现嵌入导航控制器中的视图控制器时,并不是真正呈现嵌入的视图控制器;你正在展示导航控制器!
以下任何一种方法都应该有效:
注意:如果您决定子类化
附言:我的代码使用Swift 5.1语法 |
![]() |
8
6
以下是我解决问题的方法。通常navigationController或tabBarController决定状态栏的外观(隐藏、颜色等)。 因此,我最终对导航控制器进行了子类化,并覆盖了preferredStatusBarStyle。如果当前可见的ViewContorler实现了StatusBarStyleHandler,我会要求将该值用作样式,如果没有,我只返回一个默认值。
触发状态栏外观更新的方法是调用
然后使用
|
|
9
6
即使有了所有的答案,我仍然没有找到适合我的确切解决方案,而是从丹尼尔的答案开始。我最终得到的是:
在导航控制器中(与选项卡类似,只是选择了ViewController)。然后它将尊重:
在每个视图控制器中,除非您另有设置。我不需要打电话
|
![]() |
10
4
1) 整个项目一个设置:
如果可用,请删除
将以下代码添加到您的AppDelegate.m中:
2) 不同视图控制器的不同设置:
添加
如果视图控制器未嵌入到导航控制器中。比方说MyViewController。只需将下面的代码添加到MyViewController.m文件中即可。如果您的视图控制器嵌入到导航控制器中,请创建一个新的Cocoa Touch类,并使其成为UINavigationController的子类。比方说MyNC。在情节提要的右侧窗格中选择“导航控制器视图”;实用程序->身份检查器->自定义类->类,键入“MyNC”。将Storyboard View与“MyNC”Cocoa Touch Class链接后,将以下代码添加到MyNC.m:
|
|
11
1
如果您想在splashScreen期间隐藏状态栏,但又想将样式更改为轻内容(StatusBarInitialyHidden on Plist必须为NO才能在splash时隐藏状态栏),则可以将其添加到appDelegate的didFinishLaunchingWithOptions方法中,以更改为轻属性。
|
![]() |
12
1
迅速的例子 在AppDelegate.swift中
在info.plist集中查看基于控制器的状态栏外观:否 |
![]() |
13
1
如果您正在使用
//我的自定义导航控制器
|
![]() |
14
1
雨燕4.2
|
![]() |
15
0
您可以设置状态栏样式。它将类似于IOS6及以下版本的状态栏。
并从视图中调用此方法,加载方式如下
|
![]() |
16
0
迅速的例子 func应用程序(应用程序:UIApplication,didFinishLaunchingWithOptions启动选项:NSDictionary?)->布尔{ UIApplication.sharedApplication().statusBarStyle=UIStatusBarStyl.LightContent;
在info.plist集中查看基于控制器的状态栏外观:否 |
![]() |
17
0
我只想为我面对的一个具体案例补充一点说明。我的应用程序中有另一个UIWindow,可以显示一个聊天脸,让它一直漂浮在我的应用软件上。这样做导致上面的解决方案都不起作用,我真的不确定为什么!我所注意到的是,我在新UIWindow中的ViewController就是原因!如果我想更改状态栏样式,我必须在新UIWindow的视图控制器中进行。 这条注释可能会帮助其他有类似结构的人!因此,基本上您可以在新UIWindow的ViewController中应用上述解决方案。 同样,这是一个具体的案例。 谢谢 |
|
18
0
想要一些技巧吗?无需覆盖每个视图控制器中的状态栏样式 第一:跟随@ Sahil Kapoor ,将“查看基于控制器的状态栏=是”添加到plist 第二:创建窗口的根视图控制器的子类,并返回StatusBarTrackingController。
|
![]() |
19
-1
对于swift 3,在您的UIViewController中:
|
![]() |
StuartM · IOS7选择控制器上的状态栏隐藏/显示 11 年前 |