iOS7和iOS6适配--状态条+模态视图的时候,导航隐藏,状态显示



经过几个小时的实验,终于从虐心风中走出奋斗,试了几种导航状态栏隐藏显示时候视图位置的彼变化,以下就抛下砖。欢迎拍板

// 这个基于模态视图的时候,模态视图需要加上

UINavigationController,将navgationBar隐藏时候用,状态条时间颜色风格在plist文件中设置。。

"Statusbarisinitiallyhidden" -> NO,

View controller-based status bar appearance ->NO,控制系统状态栏是否显示,如果不显示,需要在window上加20像素的view作为状态栏,。。。


只有在为YES时候以下方法才会调用

- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;//UIStatusBarStyleBlackTranslucent;
}
- (BOOL)prefersStatusBarHidden
{
    return NO;
}



//目的:用于iOS7和iOS6适配,和保留之前的坐标编码习惯,不用刻意加减
 
/*方法1:
  *1。在vc中重写viewDidLayoutSubviews方法
  *2。是用下面2个方法之一;
  *3。frame为ios6风格,状态栏和导航栏为平铺
  *4。bounds为ios7风格,状态栏和导航栏为覆盖
  *5。优点,所有subview的坐标都一ios6的标准进行编写,支持push和present
  *6。缺点,在push中每个vc都需要重写viewDidLayoutSubviews方法;
  */
void IOS 7 ToIOS 6 ofFrame( UIViewController *vc);
void IOS 7 ToIOS 6 ofBounds( UIViewController *vc);
 
void IOS 7 ToIOS 6 ofFrame( UIViewController *vc)
{
     if (IsIOS 7 ) {
         CGRect rect = vc .view .frame ;
         vc .view .frame = CGRectMake((rect .origin .x ), (rect .origin .y +(IsIOS 7 ?vc .topLayoutGuide .length : 0 )), (CGRectGetWidth(rect)), (CGRectGetHeight(rect)-(IsIOS 7 ?vc .topLayoutGuide .length : 0 )));
     }
}
 
void IOS 7 ToIOS 6 ofBounds( UIViewController *vc)
{
     if (IsIOS 7 ) {  
         CGRect rect = vc .view .bounds ;
         if (rect .origin .y != - 1 *vc .topLayoutGuide .length ) {
             vc .view .bounds = CGRectMake((rect .origin .x ), (rect .origin .y +(IsIOS 7 ?vc .topLayoutGuide .length *(- 1 ): 0 )), (CGRectGetWidth(rect)), (CGRectGetHeight(rect)));
         }
     }
}
 
/*方法2:
  *1.在vc的init或viewdidload中使用IOS7宏即可;
  *2.状态栏和导航栏为平铺
  *3.优点:所有subview的坐标都一ios6的标准进行编写,支持push,背景frame值同ios6
  *4.缺点:在push中每个vc都需要写,不支持present;
  */
 
#define IOS7 if([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=7)\
{ self .extendedLayoutIncludesOpaqueBars = NO ;\
self .modalPresentationCapturesStatusBarAppearance = NO ;\
self .edgesForExtendedLayout = UIRectEdgeNone ;}
 
/*方法3:
  *1.使用self.navigationController.navigationBar.translucent =NO;
  *2.状态栏和导航栏为平铺
  *3.优点:所有subview的坐标都一ios6的标准进行编写,支持push,背景frame值同ios6,只需要设置一次
  *4.缺点:必须有nav;对于present的vc必须为nav,此时edgesForExtendedLayout 设置为UIRectEdgeAll,为None时视图会被状态栏遮挡
  */
 
/*方法4:
  *1.重新定义CGRECT;
  *2.状态栏和导航栏为覆盖
  *3.优点:随时可以用
  */
#define IsIOS7 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=7)
#define CGRECT_NO_NAV(x,y,w,h) CGRectMake((x), (y+(IsIOS7?20:0)), (w), (h))
#define CGRECT_HAVE_NAV(x,y,w,h) CGRectMake((x), (y+(IsIOS7?64:0)), (w), (h))
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值