控制iOS 7中的状态栏

news/2025/1/15 21:49:47/

苹果终于发布了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提供了两种状态栏的样式,用于控制状态栏文字的颜色。

typedef NS_ENUM(NSInteger, UIStatusBarStyle)
{UIStatusBarStyleDefault                                     = 0, // Dark content, for use on light backgroundsUIStatusBarStyleLightContent     NS_ENUM_AVAILABLE_IOS(7_0) = 1, // Light content, for use on dark backgroundsUIStatusBarStyleBlackTranslucent NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 1,UIStatusBarStyleBlackOpaque      NS_ENUM_DEPRECATED_IOS(2_0, 7_0, "Use UIStatusBarStyleLightContent") = 2,
};







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

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

// 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 SDK中新添加的方法。如果App需要适配旧的系统(iOS 6及早期版本),则不能使用上面的方式,而应该调用UIApplication类提供的方法,这也是iOS 7之前通用的方式:

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];

同时将Info.plist文件中的View controller–based status bar appearance键值设置为NO。


http://www.ppmy.cn/news/674959.html

相关文章

华为OD机试真题B卷 Python 实现【箱子之形摆放】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 要求将一批箱子按从上到下以‘之’字形的顺序摆放在宽度为 n 的空地上,输出箱子的摆放位置,例如:箱子ABCDEFG&am…

常见的中成药神奇疗效

1 逍遥丸 逍遥丸过去常用于治疗肝郁血虚、肝脾不和所致的口燥咽干、神疲乏力、食欲减退、两胁胀痛 等症。近年来经科研和临床试用发现本品还有很多新用途。 治高脂血症 本品有良好的降低血脂功效,且疗程短、见效快,长期服用无毒副作用,停药后…

洪荒:开局摆下九曲黄河阵(一)

第一章 赵公明出关,证得大罗道果!   东海,峨眉山。 山上,森罗万象,光怪陆离,亿万万道璀璨神光弥漫苍穹寰宇,浩瀚的大道神音演绎道法自然! 峨眉山! 这是通天圣人亲传…

欧歌赛机器人_本页面内容已永久停止用户浏览!

内容提示 对不起,根据本站相关业务调整,本页面内容已永久停止用户浏览! 1、如果您要继续浏览本站,可以点击这里进入本站首页! 2、如果您要继续寻找与此本篇内容相关网页,可以点击这里进入百度搜索! 3、如需要与本站进行业务合作可以联系QQ:281688302,添加好友请注明人…

机载雷达发展简史:从蝙蝠到机载相控阵

来源:军事高科技在线 从地基起步 蝙蝠,虽然像人一样拥有双眼,但它看起东西来,用到的却不是眼睛。蝙蝠从鼻子里发出的超声波在传输过程中遇到物体后会立刻反弹,根据声波发射和回波接收之间…

阵列信号处理笔记-波达方向DOA-子空间方法

阵列信号处理-波达方向DOA-子空间方法 前言子空间和子空间数据模型子空间子空间数据模型子空间模型的参数估计1.参数建模信号采样参数估计 DOA 估计问题Deterministic maximum likelihood方法Beam forming方法 MUSIC和ESPRITMUSIC SRP-PHATCSSMWAVESTOPSFRIDA术语和约定-notati…

游戏服务器显示OV,云顶之弈:这才是版本答案,连神超都开始连败开局了,学会就上分...

#2020百度APP游戏年度盛典# 百度搜索“游戏年度盛典”,为你心目中的年度影响力投票吧!还有小度音响、定制周边等高能福利等你来拿哦! 哈喽,大家好这里是OV说游戏!之前跟各位老哥们分享一套明昼刺的玩法,不过…

前端图片引入方式神演算

https://zhuanlan.zhihu.com/p/24315362?utm_sourcetuicool&utm_mediumreferral 作者:沐洒 链接:https://zhuanlan.zhihu.com/p/24315362 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 先…