改变状态栏的颜色

作者: 梁杰_numbbbbb | 来源:发表于2017-05-18 22:08 被阅读130次

作者:Arthur Knopper,原文链接,原文日期:2016/12/29
译者:Crystal Sun;校对:walkingway;定稿:CMB

状态栏可以有两种外观:dark(黑色) 和 light(白色)。在本章教程中,将学习如何改变状态栏的外观。本节教程使用的是 Xcode 8.0 和 iOS 10。

打开 Xcode,创建一个 Single View Application。

Product Name 使用 IOS10StatusBarColorTutorial,填写自己的 Organization Name 和 Organization Identifier,Language 一栏选择 Swift,Devices 一栏选择 iPhone。

打开 Storyboard,选中 View,在 Attributes Inspetor 里将 Background Color 改成 Light Gray。运行工程,默认的状态栏颜色是黑色(dark)。

而我们想要实现的效果是白色的状态栏。打开 ViewController.swift 文件,添加下列代码:

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

上述代码将 UIStatusBarStyle 枚举项设为 lightContent。运行工程,这时状态栏的颜色变成了白色(light)。

接下来回到 Storyboard,选中 View Controller,在 Editor 菜单中选择 Embed in Navigation Controller。选中 Navigation Bar,在 Attribute Inspector 里将 Bar Tint color 设置为 red。storyboard 应该如下图所示。

运行工程,状态栏又变成了黑色,也就是默认状态。产生这个问题的原因是,iOS 请求的是 navigation controller 状态栏风格,不是 navigation controller 所包含的 controller 风格。

为了改变 Navigation controller 的风格(style),需要在 AppDelegate.swift 文件里如下修改代码:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
        
    UINavigationBar.appearance().barStyle = .blackOpaque
    return true
}

运行工程,这时状态栏的颜色变成了白色。

可以从 github 上下载 IOS10StatusBarColorTutorial 教程的源代码。

本文由 SwiftGG 翻译组翻译,已经获得作者翻译授权,最新文章请访问 http://swift.gg

相关文章

  • iOS 知识小集(Status Bar变换)

    背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示...

  • iOS 状态栏隐藏+变色

    改变状态栏颜色 iOS手机状态栏默认是黑色,在某些情况下需要改变状态栏的颜色在info.plist文件中添加:Vi...

  • 直播项目笔记(一)

    颜色封装 + ClOPageView + 瀑布流 搭建主题框架 导航栏布局 改变导航栏的颜色 改变状态栏的颜色 设...

  • 如何设置状态栏字体颜色

    改变状态栏样式,只对iOS7及以上系统有效。其实也就是改变状态栏的字体颜色,默认是黑色,可以根据导航栏背景颜色设置...

  • 20-状态栏

    1. 改变状态栏文字颜色(黑色变白色) 方法: 2.隐藏状态栏

  • 设置状态栏样式

    全局 如果想改变所有控制器的状态栏样式,可以借助Info.plist实现 状态栏默认颜色是黑色文本 改变状态栏为白...

  • iOS改变状态栏文字颜色

    iOS改变状态栏文字颜色 UINavigationController不会将 preferredStatusBar...

  • Android沉浸式(透明)状态栏适配

    在Android系统4.4以前,状态栏的背景色和字体颜色都是不能改变的。但是4.4以后Google增加了改变状态栏...

  • iOS简单粗暴改变状态栏文字颜色

    在开发过程中,在很多地方会遇到让改变屏幕上方状态栏文字的颜色。 iOS状态栏文字颜色有两种: UIStatusBa...

  • mui页面传值失败及解决办法

    传值 接收 传值改变状态栏-从不同页面返回设置不同的状态栏颜色 打印提示 isTrusted":false原因:需...

网友评论

    本文标题:改变状态栏的颜色

    本文链接:https://www.haomeiwen.com/subject/iedexxtx.html