iOS-有效控制StatusBar样式

源代码 2024-10-6 22:53:50 68 0 来自 中国
情况

Xcode 13.4
媒介

有些项目会存在差异NavigationBar颜色差异等的场景,进而需要对StatusBar颜色举行特别定制,而偶然我们明显利用了自以为准确的方式,却达不到目的结果。那是由于,相同的方式在差异设置下,表现的结果差异等,因此理清StatusBar的各种设置很告急。
Info.plist关于StatusBar的Key先容

一、UIStatusBarStyle (Status bar style)

状态栏风格,指定状态栏内容表现风格。
值UIStatusBarStyleDefaultUIStatusBarStyleDarkContentUIStatusBarStyleLightContentStatusBar样式玄色内容(默认)玄色内容(iOS13以上)白色内容二、UIViewControllerBasedStatusBarAppearance (View controller-based status bar appearance)

是否支持UIViewController通过重写preferredStatusBarStyle来指定当前控制器的StatusBar样式。
值NOYESStatusBar样式由UIStatusBarStyle同一决定由当前UIViewController的preferredStatusBarStyle决定
留意:
假如根控制器是UITabBarController,StatusBar样式取决于当前选中的控制器;
假如当前选中的控制器是UINavigationController,可以通过继承UINavigationController并重写preferredStatusBarStyle来分发到子ViewController,实现由ViewController控制StatusBar样式。

三、UIStatusBarHidden (Status bar is initially hidden)

启动时StatusBar是否埋伏。
值NOYES结果启动时表现StatusBar启动时埋伏StatusBar
留意:
只控制启动页时是否埋伏,其他页面需通过重写prefersStatusBarHidden来控制是否埋伏。

同一StatusBar样式

起首在Info.plist中添加UIViewControllerBasedStatusBarAppearance,值设为NO;
接着在Info.plist中添加UIStatusBarStyle,值设为你想要的样式即可。
差异的ViewController各自指定StatusBar样式

起首在Info.plist中添加UIViewControllerBasedStatusBarAppearance,值设为YES(Xcode 13.4 默认不添加该Key也有同样结果);
然后在各个ViewController重写prefersStatusBarHidden并返追念要的样式。
override var preferredStatusBarStyle: UIStatusBarStyle {    return .lightContent}iOS 9.0废弃的API

现在的项目根本不会兼容那么老的体系了,旧的API不要再利用了。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 16:50, Processed in 0.179113 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表