iOS7 和iOS6的屏幕适配

//目的:用于iOS7和iOS6适配,和保留之前的坐标编码习惯,不用刻意加减
 
/*方法1:
 *1。在vc中重写viewDidLayoutSubviews方法
 *2。是用下面2个方法之一;
 *3。frame为ios6风格,状态栏和导航栏为平铺
 *4。bounds为ios7风格,状态栏和导航栏为覆盖
 *5。优点,所有subview的坐标都一ios6的标准进行编写,支持push和present
 *6。缺点,在push中每个vc都需要重写viewDidLayoutSubviews方法;
 */
void IOS7ToIOS6ofFrame(UIViewController *vc);
void IOS7ToIOS6ofBounds(UIViewController *vc);
 
void IOS7ToIOS6ofFrame(UIViewController *vc)
{
    if (IsIOS7) {
        CGRect rect = vc.view.frame;
        vc.view.frame = CGRectMake((rect.origin.x), (rect.origin.y+(IsIOS7?vc.topLayoutGuide.length:0)), (CGRectGetWidth(rect)), (CGRectGetHeight(rect)-(IsIOS7?vc.topLayoutGuide.length:0)));
    }
}
 
void IOS7ToIOS6ofBounds(UIViewController *vc)
{
    if (IsIOS7) {   
        CGRect rect = vc.view.bounds;
        if (rect.origin.y != -1*vc.topLayoutGuide.length) {
            vc.view.bounds = CGRectMake((rect.origin.x), (rect.origin.y+(IsIOS7?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
 */
 
/*方法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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值