本文转载至:http://blog.csdn.net/pucker/article/details/12112105

苹果终于发布了iOS 7正式版,大批的用户都已经纷纷进行了升级。如果App是由Xcode 4.6或者更早版本生成,iOS 7系统会使用兼容模式运行该App,以便尽可能保持原有外观。但是,当使用Xcode 5重新编译App源代码时,此时会使用iOS 7 SDK来进行编译链接。(注意在使用Xcode 5打开旧项目之前备份项目源代码,因为Xcode 5会升级项目中的资源文件,且无法再使用旧版本的Xcode打开。)由于iOS 7 SDK较早期版本的SDK改动较大,因此App的界面也会出现种种问题,其中最明显的问题就是状态栏与导航栏的显示问题。

iOS 6:

iOS7:

当未使用导航栏时,上面的截图对比了在iOS 6与iOS 7上的显示情况。iOS 6中的状态栏不透明,视图控制器的主视图原点在状态栏下面。而iOS 7的状态栏背景色变为透明色,视图控制器的主视图原点在屏幕左上角,即状态栏显示在主视图之上,透过状态栏可以显示视图的内容。

iOS 7提供了两种状态栏的样式,用于控制状态栏文字的颜色。

  1. typedef NS_ENUM(NSInteger, UIStatusBarStyle)
  2. {
  3. UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgrounds
  4. UIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds
  5. UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
  6. UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
  7. };
typedef NS_ENUM(NSInteger, UIStatusBarStyle)
{
UIStatusBarStyleDefault = 0, // Dark content, for use on light backgrounds
UIStatusBarStyleLightContent NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgrounds UIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,
UIStatusBarStyleBlackOpaque NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
};

如果状态栏背景为浅色,应选用黑色字样式(UIStatusBarStyleLightContent);如果背景为深色,则选用白色字样式(UIStatusBarStyleDefault,默认值)。

iOS 7的UIViewController类里添加了几个新的方法,用于控制状态栏。

  1. // These methods control the attributes of the status bar when this view controller is shown. They can be overridden in view controller subclasses to return the desired status bar attributes.
  2. - (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0); // Defaults to UIStatusBarStyleDefault
  3. - (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO
  4. // This should be called whenever the return values for the view controller's status bar attributes have changed. If it is called from within an animation block, the changes will be animated along with the rest of the animation block.
  5. - (void)setNeedsStatusBarAppearanceUpdate NS_AVAILABLE_IOS(7_0);
// These methods control the attributes of the status bar when this view controller is shown. They can be overridden in view controller subclasses to return the desired status bar attributes.
- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0); // Defaults to UIStatusBarStyleDefault
- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0); // Defaults to NO // This should be called whenever the return values for the view controller's status bar attributes have changed. If it is called from within an animation block, the changes will be animated along with the rest of the animation block.
- (void)setNeedsStatusBarAppearanceUpdate NS_AVAILABLE_IOS(7_0);

preferredStatusBarStyle方法用于指定当前视图控制器的状态栏样式,prefersStatusBarHidden方法指定是否隐藏状态栏。当修改了状态栏的字体颜色、显示或隐藏时,调用setNeedsStatusBarAppearanceUpdate方法告知系统需要刷新状态栏。

控制iOS 7中的状态栏的更多相关文章

  1. 理解ios 11中webview的视口

    iOS 11在状态栏区域带来了一些新的,也许是不直观的行为,这对使用Apache Cordova或Ionic等工具的开发人员尤为重要.特别是,这种行为变化会影响任何基于Web的应用程序,这些应用程序在 ...

  2. zhuang 定制iOS 7中的导航栏和状态栏

    近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也就意味着导航栏 ...

  3. iOS 7 教程:定制iOS 7中的导航栏和状态栏

    目录(?)[-] iOS 7中默认的导航栏 设置导航栏的背景颜色 在导航栏中使用背景图片 定制返回按钮的颜 修改导航栏标题的字体 修改导航栏标题为图片 添加多个按钮 修改状态栏的风格 隐藏状态栏 总结 ...

  4. (转)定制iOS 7中的导航栏和状态栏

    近期,跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外观上有大量的改动.从开发者的角度来看,导航栏和状态栏就发生了明显的变化.状态栏现在是半透明的了,这也就意味着导航栏 ...

  5. 定制iOS 7中的导航栏和状态栏

    本文转载至 http://www.cocoachina.com/industry/20131104/7287.html 跟大多数开发者一样,我也正忙于对程序进行升级以适配iOS 7.最新的iOS 7外 ...

  6. iOS测试中发现一个textview控制,使用clear()无法清除文字

    iOS测试中发现一个textview控制,使用clear()无法清除

  7. (翻译)开始iOS 7中自动布局教程(二)

    这篇教程的前半部分被翻译出来很久了,我也是通过这个教程学会的IOS自动布局.但是后半部分(即本篇)一直未有翻译,正好最近跳坑翻译,就寻来这篇教程,进行翻译.前半部分已经转载至本博客,后半部分即本篇.学 ...

  8. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  9. iOS开发中设置UITextField的占位文字的颜色,和光标的颜色

    在iOS开发中,对于很多初学者而言,很有可能碰到需要修改UITextField的占位文字的颜色,以及当UITextField成为第一响应者后光标的颜色,那么下面小编就介绍一下修改占位文字和光标的颜色. ...

随机推荐

  1. hibernate 中HQL查询

    由于比较简单,在此处只写一些HQL语言. 表关系,多对一. CREATE TABLE `user` ( `id` ) NOT NULL AUTO_INCREMENT, `uname` varchar( ...

  2. delphi无边框可拖动窗体

    unit UFrmModless; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, ...

  3. xcode下build release版本号的.a库

    1. 点击房子 图标button watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcnlmZGl6dW8=/font/5a6L5L2T/fontsize/40 ...

  4. Hadoop HDFS操作命令总结

    Hadoop HDFS操作命令总结 1.列出根目录下所有的目录或文件 hadoop fs -ls / 2.列出/logs目录下的所有目录和文件 hadoop fs -ls /logs 3.列出/use ...

  5. Ubuntu设置中文-以及-安装拼音输入法

    2017-11-12更新 安装搜狗拼音: http://blog.csdn.net/iamplane/article/details/70447517 ------------------------ ...

  6. Unix系统编程()信号处理器简介

    信号处理器简介 信号处理器程序(也称为信号捕捉器)是当指定信号传递给进程时将会调用的一个函数.这里会学习信号处理器的基本原理,后面将继续学习. 调用信号处理器程序,可能会随时打断主程序流程:内核代表进 ...

  7. 【Spring实战】—— 3 使用facotry-method创建单例Bean总结

    如果有这样的需求: 1 不想再bean.xml加载的时候实例化bean,而是想把加载bean.xml与实例化对象分离. 2 实现单例的bean 以上的情况,都可以通过工厂方法factory-metho ...

  8. librtmp将本地FLV文件发布到RTMP流媒体服务器

    没有用到ffmpeg库 可以将本地FLV文件发布到RTMP流媒体服务器 使用librtmp发布RTMP流可以使用两种API:RTMP_SendPacket()和RTMP_Write(). 使用RTMP ...

  9. NPOI导入Excel日期格式的处理 - 附类型格式匹配表

    传统操作Excel方法在部署的时候遇到很多问题,如目标主机需要安装Excel.64位电脑不支持.需要安装相关驱动程序等.所以我们一般会使用开源的NPOI来替代传统的Excel操作方法,NPOI的优点是 ...

  10. HeadFirst jsp 08 无脚本JSP

    web页面设计人员真的必须懂 java ? web页面人员可以很快学习 EL 语言. 目前不知道 EL 应用前景如何, 但是我们香港系统没有使用 EL. include 指令 include指令告诉容 ...