ios项目适配ios6 ios7

此篇,我基于storyboard纪录一下项目如何适配ios6 ios7.


步骤:

1 导航栏问题解决。众所周知,iphone5 为4寸,iphone4 为3.5寸,所以为适配iphone4 iphone5 导航栏的大小不一,且ios7 时,坐标从(0,0)开始。

创建UINavigationController的子类 

在子类中添加:

#pragma mark 一个类只会调用一次

    + (void)initialize

    {

        // 1.取出设置主题的对象

        UINavigationBar *navBar = [UINavigationBar appearance];

        

        // 2.设置导航栏的背景图片

        NSString *navBarBg = nil;

        if (IOS7Later ) { // iOS7

            navBarBg = @"navBG64";

            navBar.tintColor = [UIColor whiteColor];

        } else { // iOS7

            navBarBg = @"navBG";

            [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

        }

        [navBar setBackgroundImage:[UIImage imageNamed:navBarBg] forBarMetrics:UIBarMetricsDefault];

        NSLog(@"navFrame: %@",NSStringFromCGRect(navBar.frame));

        // 3.标题

        [navBar setTitleTextAttributes:@{

                                         UITextAttributeTextColor : [UIColor whiteColor]

                                         }];

        

    }

    

#pragma mark 控制状态栏的样式

- (UIStatusBarStyle)preferredStatusBarStyle

{

    return UIStatusBarStyleDefault;//黑色

//    return UIStatusBarStyleLightContent;

}


2 设置viewcontroller中属性

(1)self.automaticallyAdjustsScrollViewInsets = NO;
看这个UIViewController的这个属性你就明白了,此属性默认为YES,这样UIViewController下如果只有一个UIScollView或者其子类,那么会自动留出空白,让scollview滚动经过各种bar下面时能隐约看到内容。但是每个UIViewController只能有唯一一个UIScollView或者其子类,如果超过一个,需要将此属性设置为NO,自己去控制留白以及坐标问题。

(2)

if (IOS7)
{
    self.edgesForExtendedLayout = UIRectEdgeNone;               //视图控制器,四条边不指定
    self.extendedLayoutIncludesOpaqueBars = NO;                 //不透明的操作栏  
self.modalPresentationCapturesStatusBarAppearance = NO;
}




ios项目适配ios6 ios7,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。