iOS7和iOS6适配--状态条+模态视图的时候,导航隐藏,状态显示
来源:互联网 发布:英雄杀mac 编辑:程序博客网 时间:2024/06/09 20:15
经过几个小时的实验,终于从虐心风中走出,试了几种导航状态栏隐藏显示时候视图位置的彼变化,以下就抛下砖。欢迎拍板
// 这个基于模态视图的时候,模态视图需要加上
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))
0 0
- iOS7和iOS6适配--状态条+模态视图的时候,导航隐藏,状态显示
- 隐藏或显示iphone的状态条
- iPhoneX状态条的隐藏与显示
- iOS6和iOS7的导航栏区别
- 视图状态和隐藏字段
- ios6.1 和iOS7.1 IOS8的导航条试图frame
- Python - windows - 隐藏和显示Windows 状态条
- 118 js arale.dialog dialog嵌套时候改变关闭按钮的显示和隐藏状态
- 让iOS7的状态条恢复原样
- SystemUI状态条下拉视图显示过程
- iOS7和iOS6适配
- 适配ios6和ios7
- 安卓 隐藏手机上方的状态以及下方的底部导航条NavigationBar
- 隐藏状态条
- Android系统移植与调试之------->如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
- 如何iOS6和iOS7下隐藏UITabBar
- iphone导航条的显示与隐藏
- jQuery显示和隐藏 常用的状态判断方法
- Spark RDD Transformation 详解---Spark学习笔记7
- 根据节点读取assets下xml文件内容
- 不插SIM卡,不能拨打紧急电话
- 获取系统时间
- OpenCV笔记之一:将RGB视频转换为灰度输出并在窗口显示
- iOS7和iOS6适配--状态条+模态视图的时候,导航隐藏,状态显示
- The procedure entry point @Dbxdynalink@initialization$qqrv could not be
- VC/MFC的HDC,CDC,CWindowDC,CClientDC,CPaintDC
- uboot启动简单分析
- 二级文章分类调用格式化
- linux下解压命令大全
- 如何拜托NullPointerException
- 栈和队列
- Java网络编程之网络基础