zoukankan      html  css  js  c++  java
  • 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))

    参考资料

    http://www.xiaoyaoli.com/?p=1167

    iOS6适配iOS7    iOS 适配   IOS7 UI适配

    iOS开发实用技巧——屏幕适配研究

    iOS 7 教程:定制iOS 7中的导航栏和状态栏

    如何让你的App适配iOS7?

    iOS6适配iOS7

    定制iOS 7中的导航栏和状态栏

    iOS7适配问题总结  

    iOS开发之适配iPhone5背景图

    http://blog.sina.com.cn/s/blog_aeb8e4450101bjxc.html

    xcode 5与ios 7的屏幕适配问题

    #define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)
    
    float height = DEVICE_IS_IPHONE5?568:480;
    if (height == 568) {
        // 4"
    } else {
       // 3"
    }
    http://stackoverflow.com/questions/12395200/how-to-develop-or-migrate-apps-for-iphone-5-screen-resolution/16914009#16914009

    iOS 6 apps - how to deal with iPhone 5 screen size?

  • 相关阅读:
    1370
    1336
    1298
    1289
    Buy Tickets(poj2828)
    The Balance(poj2142)
    1067
    Lightoj1011
    1319
    Back to Underworld(lightoj 1009)
  • 原文地址:https://www.cnblogs.com/hl666/p/3655258.html
Copyright © 2011-2022 走看看