适配ios6 7

此篇,我基于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; }

你可能感兴趣的:(适配ios6 7)