iOS7自定义statusbar和navigationbar的若干问题

当然有许多问题是这篇文章中没有提到的,按照文章的方法进行设置,你可能会遇到以下问题: 
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的源代码才会清楚,但是我们看不到。所以遵循开发规则很重要,对每个一个黄色警告和控制台输出的警告信息一定要注意修复。说不定以后就会中招。

时间: 2024-07-30 06:02:18

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

ios7 自定义UINavigationBar UIBarButtonItem 10px的偏移纠正的两种解决方案

demo下载地址:http://pan.baidu.com/s/1c0eROkS 方案一:利用UINavigationBar 自带的布局item(Fixed space Bar Button Item)来适配ios7. 其实就是在原来返回按钮的位置上在多加一个占位的Item 为UINavigationBar 写一个分类.UINavigationItem+correct_offset.h #import <UIKit/UIKit.h> @interface UINavigationItem (c

iOS7 自定义动画跳转

简介 在iOS7系统中,如果你使用短信或者appStore苹果原生的工具的时候会发现这么一个细节.UINavigationViewController中界面的Push不再是像iOS6的旧界面左移,新的界面直接右侧滑入,而是新的视图是从右侧滑入并且盖在了之前视图控制器之上,还可以通过手势在界面左侧边界滑动来跳转到之前的界面.如图1.1,1.2. 图1.1                                          图1.2 不知道你是否已经看出两幅图之间的区别.有一个好的消息

关于iOS7.0以后修改navigationBar的返回按钮的文本、颜色、自定义按钮等等

1.返回按钮的颜色 self.navigationController.navigationBar.tintColor = [UIColor whiteColor]; 2.设置返回按钮的内容 A -> B 在push的时候,在A中添加代码: UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init]; backItem.title = @"你的文字"; self.navigationItem.backBarButtonIt

第六十五篇、iOS7自定义转场动画

自定义转场动画,在iOS7及以上的版本才开始出现的,在一些应用中,我们常常需要定制自定义的的跳转动画 1.遵守协议:<UIViewControllerAnimatedTransitioning> 2.协议的方法主要的是两个: // 指定动画的持续时长 1. (NSTimeInterval)transitionDuration: // 转场动画的具体内容 2. (void)animateTransition:(id <UIViewControllerContextTransitioning

iOS7+自定义返回按钮

本来我是用创建UIButton赋值给self.navigationItem.leftBarButtonItem的方式设置返回按钮的,用了觉得挺正常,结果看了@蛙牛的文章<Java转iOS-第一个项目总结(2)>后,发现一个重大问题:手势返回功能没了,原因就是用设置leftBarButtonItem的方式来自定义返回按钮会导致手势返回功能失效. 如果不自定义返回按钮,又因为我使用的是RDVTabBarController,需要在返回方法里手动设置hide tabbar属性,这样我就需要拦截返回手

系统去掉 Android 4.4.2 的StatusBar和NavigationBar

1. System Bar简单介绍 在Android4.0 (API Level 14)及更高版本号中.System Bar由Status Bar<位于顶部>和Navigation Bar<位于底部>组成. 在Android的官方站点已经具体解说了怎样Hdie Status Bar和Navigation Bar. 本文化讲述怎样在系统中Hide Status Bar和Navigation Bar,使之永远不会出现.本文以Android 4.4.2为例. 上图中的1为:StatusB

解决iOS7自定义返回按钮后不能侧滑返回的问题

iOS7自带侧滑返回功能,但是自定义返回按钮之后,侧滑返回功能会失效,解决办法如下: 自定义一个UINavigationController,实现几个代理方法 @interface CustomNavigationController : UINavigationController @end #import "CustomNavigationController.h" @interface CustomNavigationController ()<UINavigationCo

IOS7 自定义UIBarButtonItem 的一些问题

ios 下自定义导航栏的BarButtonItem 会产生一些偏移问题, 解决方案: 通过新建一个系统的带固定距离的Item来调节你的Item #define   IOS7_NAVI_SPACE   -10 }     [self.navigationItem setLeftBarButtonItems:[self getBackBarButtonitem]]; } //返回按钮 -(NSArray *)getBackBarButtonitem{     //自定义button     UIBu

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

-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开启ios右滑返回 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.delegate = n