在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
状态栏分前后两部分,要分清这两个概念,后面会用到:
一、设置statusBar的【前景部分】简单来说,就是设置显示电池电量、时间、网络部分标示的颜色,
可以设置的地方有两个:plist设置里面 和 程序代码里
按照UI给的图,因为背景颜色要突出,所以要求状态栏使用亮色,但实际上默认是黑色 这里使用两种方法: 第一种:你是要全工程的状态栏都要变白色: 操作AppDelegate 1)在info.plist中新增 View-Controller-based status bar appearance 属性,Value选择NO 2)在启动方法func application(...)下调用直接书写 UIApplication.sharedApplication().statusBarStyle = .LightContent 这样就可以把默认的黑色改为白色 启动App,完成,一次设置,所有页面都相同。但是出现对状态栏颜色有不同需求的话 就需要用到第2种方法
第二种:只是部分控制器需要修改状态栏文字的颜色: 操作ViewController 1)同样是对info.plist的操作,同方法1一样新增属性,不过这次的Value为YES 2)在ViewController中,可以重写以下方法即可 override func preferredStatusBarStyle() -> UIStatusBarStyle { return .LightContent; } 启动App,完成,更加灵活的操作。
二、设置statusBar的【背景部分】背景部分,简单来说,就是背景色;改变方法有两种: 系统提供的方法navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色 注意:一旦你设置了navigationBar的- (void)setBackgroundImage:(UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics接口,那么上面的setBarTintColor接口就不能改变statusBar的背景色,statusBar的背景色就会变成纯黑色。 另辟蹊径创建一个UIView,
例: info.plist中新增 View-Controller-based status bar appearance 属性,Value选择NO
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. window = UIWindow(frame: UIScreen.mainScreen().bounds) window?.rootViewController = UINavigationController(rootViewController: ViewController()) window?.backgroundColor = UIColor.whiteColor() window?.makeKeyAndVisible()
// 状态栏字体白色 UIApplication.sharedApplication().statusBarStyle = .LightContent // 状态栏背景颜色 // 在window上添加一个view保持在最前方, 需要注意的是这个view要在根视图控制器设置之后创建, 不然会出现显示不出来的情况 let stateBarBlockView = UIView(frame: CGRectMake(0, 0, window!.bounds.width, 20)) stateBarBlockView.backgroundColor = UIColor.blackColor() window?.addSubview(stateBarBlockView) window?.bringSubviewToFront(stateBarBlockView) return true } |
请发表评论