当然有许多问题是这篇文章中没有提到的,按照文章的方法进行设置,你可能会遇到以下问题: 
1.navigationbar的背景图片自定义以后,statusbar虽然和navigationbar共用了背景图,但是其还是透明的,颜色会比navigationbar淡许多,导致最终效果很难看,那么如何修复这个问题呢?很简单调用以下方法:

self.navigationController.navigationBar.translucent = NO;

此时navigationbar和statusbar就融为一体了,实现了类似evennote的那种效果。 
我曾经试图通过设置:

self.extendedLayoutIncludesOpaqueBars = YES;

来修复这个问题,我之所以会想到这个办法是因为通过设置controller的view的背景色我发现,statusbar下面似乎没有被背景色填充,事实却证明此方法行不通。

2.自定义navigationbar的背景图以后pop一个controller播放动画时,statusbar和navigationbar所在的位置会显示navigationcontroller的背景色,因为默认是黑色的,如果你的controller的背景色不是黑色的就会非常难看。那么解决这个问题的关键就是将:

self.extendedLayoutIncludesOpaqueBars = YES

因为默认是NO。我建议在你自定义navigationbar之后始终将它设置为NO,这样既能解决上述所述的问题,也能方便你在xib或者storyboard中的布局,如果使用默认值你会发现,在你自定义navigationbar的样式之后xib或者storyboard中的试图统统向下挪动了64,非常的蛋疼。

3.关于preferredStatusBarStyle不执行的问题。 
这个方法不执行,害的我花了一天的时间去解决,各个无果之后求助了stackoverfollow的大神在线帮助,一夜纠结之后有大神回复了这个问题,那就是因为没有给UIApplication设置rootViewController。我现在的工作属于二次开发,项目没有使用系统apple提供的导航控制器,自定义的导航控制也不从系统的继承而来,导致没有设置rootViewController,虽然控制台有警告信息,但是项目能够正常运行,所以一直没有注意这个问题,最终导致了preferredStatusBarStyle无法执行。虽然具体原因只有看过UIApplication的源代码才会清楚,但是我们看不到。所以遵循开发规则很重要,对每个一个黄色警告和控制台输出的警告信息一定要注意修复。说不定以后就会中招。

iOS7自定义statusbar和navigationbar的若干问题的更多相关文章

  1. [置顶] IOS7状态栏StatusBar官方标准适配方法

    IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...

  2. IOS7状态栏StatusBar官方标准适配方法

    IOS7状态栏StatusBar官方标准适配方法 hello,大家好,ios7正式版已经发布,相信大家都在以各种方式来适配ios7. 如果你已经下载了xcode5,正准备使用,你会发现各种布局的改变. ...

  3. ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正

    为UINavigationBar 写一个分类.UINavigationItem+correct_offset.h  转载 http://www.colabug.com/thread-1112420-1 ...

  4. IOS7学习之路九(ios7自定义UIAlertView)

    IOS7的UIAlertView 不支持自定义,无法添加subview . 不过可以用第三方库git上的下载链接    https://github.com/wimagguc/ios-custom-a ...

  5. iOS7自定义back按钮和pop交互手势

    Clambake for iPhone有一个回退按钮在所有的导航条上.这是一个简单的没有文字箭头. 实现一个自定义按钮是简单的.类似这个设置controller 的navigationItem一个le ...

  6. 系统去掉 Android 4.4.2 的StatusBar和NavigationBar

    1. System Bar简单介绍 在Android4.0 (API Level 14)及更高版本号中.System Bar由Status Bar<位于顶部>和Navigation Bar ...

  7. IOS7 自定义UIBarButtonItem 的一些问题

    ios 下自定义导航栏的BarButtonItem 会产生一些偏移问题, 解决方案: 通过新建一个系统的带固定距离的Item来调节你的Item #define   IOS7_NAVI_SPACE   ...

  8. ios7自定义返回按钮后,右滑返回功能失效解决方法

    -(void)viewWillAppear:(BOOL)animated{     [super viewWillAppear:animated];     //开启ios右滑返回     if ([ ...

  9. 【转】系统去掉 Android 4.4.2 的StatusBar和NavigationBar

    系统Hide Status Bar frameworks/base/core/res/res/values/dimens.xml 把  <dimen name="status_bar_ ...

随机推荐

  1. Centos系统备份与恢复教程

    Linux不像windows,它不限制根用户存取任何东西,因此,你完全可以把一个分区上每一个的文件放入一个TAR文件中. 使用root用户切换到根目录 然后,使用下面的命令备份完整的系统: tar c ...

  2. Qt: 绘图基础(非常简洁明了,全面)

    QPainter 能绘制: point, line, rectangle, ellipse, arc, chord, polygon, pie segment, Bezier curve, QPixm ...

  3. Microsoft SQL Server 2012 数据库安装图解教程

    本文部分引用以下文章: SQL Server 2012 安装图解教程(附sql2012下载地址)_MsSql_脚本之家 http://www.jb51.net/article/36049.htm SQ ...

  4. How to Send an HTTP Header With Every Request With Spring RestTemplate

    In Know Which Apps Are Hitting Your Web Service, I showed how to write a servlet filter that enforce ...

  5. Compiler options do not specify -mv64+, but configuration is for C64x+

     2013-06-20 10:02:47 错误报告: "pin_connect_cfg.s62", ERROR!   at line 365: [ ***** USER ERROR ...

  6. NFC(5)编写NFC程序的基本步骤

    1,设置权限 <uses-permission android:name="android.permission.NFC" /> 2,限制Android版本 <u ...

  7. Task-based Asynchronous Pattern (TAP)

    The Task-based Asynchronous Pattern (TAP) is based on the System.Threading.Tasks.Task and System.Thr ...

  8. mysql运算符的优先级

    Operator precedences are shown in the following list, from highest precedence to the lowest. Operato ...

  9. Codeforces Round #306 (Div. 2)

    A. Two Substrings You are given string s. Your task is to determine if the given string s contains t ...

  10. angularjs的事件 $broadcast and $emit and $on

    angularjs的事件 $broadcast and $emit and $on <!DOCTYPE html> <html> <head> <meta c ...