我正在尝试修改状态栏的外观(将文本设置为白色/将样式设置为“灯光”)。通过将其添加到AppDelegate中,我成功地设置了背景色。swift文件:
let statWindow = UIApplication.shared.value(forKey:"statusBarWindow") as! UIView
let statusBar = statWindow.subviews[0] as UIView
statusBar.backgroundColor = UIColor(red: 0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0)
但是,当我去更改状态栏的文本样式时,甚至在一般情况下更改此样式
我还试图通过nfo.plist修改状态栏,但是没有“基于视图控制器的状态栏外观”字段(见第二张图片)。此外,状态栏样式选项下没有“轻”样式选项(见下图):
斯威夫特3
如果基于视图控制器的状态栏外观在信息中为“是”。普利斯特
然后对所有NavigationController使用此扩展
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
如果没有UINavigationController,只有UIViewController,则使用以下代码:
extension UIViewController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
目标c
创建类别类
对于UIViewController
在UIViewController StatusBarStyle中。H
@interface UIViewController (StatusBarStyle)
@end
在UIViewController StatusBarStyle. m
#import "UIViewController+StatusBarStyle.h"
@implementation UIViewController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
对于UINavigationController
在UINavigationController StatusBarStyle中。H
@interface UINavigationController (StatusBarStyle)
@end
在UINavigationController StatusBarStyle. m
#import "UINavigationController+StatusBarStyle.h"
@implementation UINavigationController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
在应用程序的每个UIViewController中,都应该覆盖preferredStatusBarStyle
属性:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
最后,打电话:
<your controller>.setNeedsStatusBarAppearanceUpdate()
如果此状态栏样式贯穿整个应用程序,则应创建一个实现此功能的BaseViewController
类,并使所有视图控制器从BaseViewController继承。
你错过的一步是信息。普利斯特。
打开应用的info.plist文件,并将UIViewControlllerBasedStatusBar外观设置为NO(如下所示)。
注意:如果此键尚未出现,可以通过以下方式添加:
1) 将鼠标悬停在现有条目上可显示添加/删除图标:
2) 单击加号图标添加新的密钥/值对:
3) 将UIViewControllerBasedStatusBarAppearance
粘贴到键字段中,并将其值设置为NO
。注意:按键将变为查看基于控制器的状态
当取消选择时,但它是一样的:
我有一个应用程序,基于视图控制器的状态栏外观设置为。我的一些视图是深色的,一些视图是浅色的,应用程序有一个相当复杂的视图控制器层次结构,但它可以完美地将适当的方法子类化和重写,并与模式视图(捕捉呈现样式等)相结合。 然而,我需要一种全局的方式来查看顶部的特定项目(在状态栏后面,在我的应用程序边界内),就像顶部的个人热点/GarageBand录音/通话等栏一样。由于栏的背景颜色,我想在显示栏时覆盖状
我在iOS应用程序中实现了一个导航栏,我将淡色设置为白色,但在运行应用程序时,状态栏不跟随淡色,只是透明的(见图)。我的目标是状态栏有半透明的风格。 怎么解决这个问题?
标题说明了一切。或者我在理解sdk时有一些非常错误的地方,或者苹果的sdk有一些非常错误的地方。 设置(info.plist)基于视图控制器的状态时..=是的,我可以通过调用setNeedsStatusBarEtc来隐藏我的状态栏动画等等。。。但是,我不能改变我喜欢的风格。当我将其设置为“否”时,我可以更改样式,但不能更改所有其他内容。。我该怎么办?怎么了?请帮帮我! 当基于控制器的状态...=Y
我需要根据视图控制器改变状态栏样式,所以在我的plist文件“基于视图控制器的状态栏外观”设置为是。 我有时需要隐藏状态栏! 我试图使用setStatusBarHidden,但它似乎只有在“基于视图控制器的状态栏外观”设置为NO时才能工作... 有没有办法隐藏状态栏?
我正在尝试更改其中一个ViewController的状态栏样式。我把这个 在plist中将基于视图的状态栏设置为“是” 2. 还补充了这一点 [自设置需求状态栏外观更新] 它可以工作,也就是说,我可以看到字体颜色为白色,但过了一段时间,它又变回了以前的类型。。
问题内容: 我正在尝试将状态栏的颜色更改为蓝色或其他某种颜色。 这可能吗,或者Apple不允许吗? 问题答案: 注意:此解决方案在iOS 13及更高版本下失败。 Plist中的第一个设置为 输出屏幕截图如下