【发布时间】:2017-12-04 03:57:30
【问题描述】:
我使用navigationController,我隐藏了navigationBar,如何在iPhoneX 上设置statusBar 颜色? 我不想设置 self.view.backgroundColor
iPhoneX 缺口颜色
【问题讨论】:
-
谢谢。也许我必须设置背景视图的颜色。
标签: iphone-x
我使用navigationController,我隐藏了navigationBar,如何在iPhoneX 上设置statusBar 颜色? 我不想设置 self.view.backgroundColor
iPhoneX 缺口颜色
【问题讨论】:
标签: iphone-x
UIView *statusBar = (UIView *)[[UIApplication sharedApplication] valueForKey:@"statusBar"];
statusBar.backgroundColor = [UIColor greenColor];
【讨论】:
这是一个在应用程序启动期间或视图控制器的 viewDidLoad 期间更改/设置状态栏背景颜色的技巧。
extension UIApplication {
var statusBarView: UIView? {
return value(forKey: "statusBar") as? UIView
}
}
// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
return true
}
}
or
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
}
}
结果如下:
【讨论】:
application.statusBarView?.backgroundColor = .red,因为UIApplication 的实例被传递到函数中,不需要调用你的单例实例。
斯威夫特 4
func setStatusBarBackgroundColor(_ color: UIColor) {
guard let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return }
statusBar.backgroundColor = color
}
【讨论】:
在 Interface Builder 中,我只是在 0x0、44px 高和与顶级视图相同的宽度处添加了一个视图,然后将此视图设置为所需的背景颜色。这改变了状态栏的背景颜色,而不影响视图背景颜色。
就我而言,我需要这样的东西,因为我屏幕的上半部分是一种颜色,而下半部分是另一种颜色。我没有看到另一种让状态栏与顶部颜色匹配且主页按钮区域与底部颜色匹配的方法。
如果额外的视图妨碍了 iPhone X 以外的设备,这可以很容易地以编程方式完成。在我的情况下,它不会在其他设备上造成问题。
【讨论】: