fol*_*urk 5 statusbar ios swift
我试图修改状态栏的外观(使文本白色/将样式设置为"亮").我设法通过将其添加到我的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)
Run Code Online (Sandbox Code Playgroud)
但是,当我去更改状态栏文本的样式时,即使在常规>部署信息>状态栏样式(将其更改为"Light")下更改此项也不起作用.
我还尝试通过Info.plist修改状态栏,但没有"查看基于控制器的状态栏外观"的字段(请参阅第二张图像).此外,状态栏样式选项下没有"浅色"样式选项(见下图):
状态栏样式选项:

没有视图控制器状态栏字段:

小智 10
您错过的步骤是Info.plist.
打开应用程序的info.plist文件,将UIViewControllerBasedStatusBarAppearance设置为NO(如下所示).
注意:如果尚未出现此密钥,则可以添加此密钥:
1)将鼠标悬停在现有条目上以显示添加/删除图标:
2)单击加号图标以添加新的键/值对:
3)粘贴UIViewControllerBasedStatusBarAppearance到关键字段并将其值设置为NO.注意,View controller-based status...当取消选择时,密钥将更改为,但它是相同的:
在应用程序的每个UIViewController中,您应该覆盖preferredStatusBarStyle属性:
override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
Run Code Online (Sandbox Code Playgroud)
并最终致电:
<your controller>.setNeedsStatusBarAppearanceUpdate()
Run Code Online (Sandbox Code Playgroud)
如果这个statusBar样式遍及你的所有应用程序,那么你应该创建一个BaseViewController实现它的类,并使所有视图控制器继承自BaseViewController.
迅捷3
如果在Info.plist中查看基于控制器的状态栏外观= YES
然后对所有NavigationController使用此扩展
extension UINavigationController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有UINavigationController,只有UIViewController,那么使用下面的代码:
extension UIViewController
{
override open var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
Run Code Online (Sandbox Code Playgroud)
目标c
创建类别类
对于UIViewController
在UIViewController + StatusBarStyle.h中
@interface UIViewController (StatusBarStyle)
@end
Run Code Online (Sandbox Code Playgroud)
在UIViewController + StatusBarStyle.m中
#import "UIViewController+StatusBarStyle.h"
@implementation UIViewController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
Run Code Online (Sandbox Code Playgroud)
对于UINavigationController
在UINavigationController + StatusBarStyle.h中
@interface UINavigationController (StatusBarStyle)
@end
Run Code Online (Sandbox Code Playgroud)
在UINavigationController + StatusBarStyle.m中
#import "UINavigationController+StatusBarStyle.h"
@implementation UINavigationController (StatusBarStyle)
-(UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8689 次 |
| 最近记录: |