1、Ios7之后的一大特点是导航栏不再占据状态栏的高度,而是在状态栏的基础上另外占用了一个44的高度,实为64,所以在自定义的导航栏中,适配导航栏时,一个简便的方法是ios7之前的版本使用高度为44的图片设置为导航栏的背景,而ios7则使用64的图片设置背景。
2、ios6与ios7之后的控制器view的适配
下图是IOS7未适配之前的view,此图去掉了自定义的UITabBarController的view,方便查看
而下面这个图则是不去掉tabbar时的原图,Tableview的视图也有一部分被tabbar挡住了
整个应用的视图层级是这样的:
tabbar控制器(root控制器)——>导航控制器——>开奖信息控制器(UITableViewController)
由以上可以看出Tableview的视图延伸到了导航栏以及tabbar之后,这是因为ios7之后app的的view是默认平铺到整个屏幕的,而ios6之前的版本则不是。所以要适配不同版本的view时需要做一些特别的处理,如下。
可以定义系统版本 #define IOS7 ([[[UIDevice currentDevice] systemVersion] floatValue]>=7.0)
这是一个自定义的UITabBarController的viewDidLoad方法
-(void)viewDidLoad
{
[super viewDidLoad];
if( [[[UIDevice currentDevice] systemVersion] floatValue]>=7.0){
//1、UIRectEdgeNone不要往四周边缘扩展(按照非ios7的传统展示)
self.edgesForextendeLayout = UIRectEdgeNone;
//2、让所有的子控件都不能往四周展开(如uitableview等)
for(UIViewControllers *vc in self.childViewControllers)
{
vc.edgesForExtendedLayout = UIRectEdgeNone;
}
}
}
此外还有self.extendedLayoutIncludesOpaqueBars和self.automaticallyAdjustsScrollViewInsets属性等用于导航栏和tabbar的适配,这里就不详细阐述了
3、由于iPhone尺寸不再是固定,当然屏幕的大小也需要视频,比如设置view的背景图片等,就需要准备不同尺寸的图片,同时拿到屏幕尺寸的大小来设置,如4英寸的:
#define is4inch ( [UIScreen mainScreen].bounds.size.geight ==568.0),同理iPhone6plus的做相应的定义