首先说下让本身的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档便可,这里再也不多述;第二种方法是和以前iPhone5的相似,比较简单,为iPhone6和6+添加两张特殊的pngapp
iPhone6:命名:Default-375w-667h@2x.png 分辨率:750*1334优化
6+ 命名:Default-414w-736h@3x.png 分辨率:1242*2208spa
注意:ci
若是要在app的介绍页面里有“为iPhone6,6 plus优化”的字样就必须使用第一种方法,使用第二种方法的话仍是会显示“为iPhone5优化”文档
下面说一下纯代码适配it
首先iPhone5的界面必定要彻底适配,这样才能完美适配6和6Plus。
首先,我么咱们要观察一下5,6和6Plus的尺寸比例关系io
很明显能看出这三种屏幕的尺寸宽高比是差很少的,所以能够在5的基础上,按比例放大来适配6和6Plus的屏幕。
table
在AppDelegate.h中基础
1float 2 |
@property float autoSizeScaleX; @property float autoSizeScaleY; |
在AppDelegate.m中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#define ScreenHeight [[UIScreen mainScreen] bounds].size.height #define ScreenWidth [[UIScreen mainScreen] bounds].size.width
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate];
if(ScreenHeight > 480){ myDelegate.autoSizeScaleX = ScreenWidth/320; myDelegate.autoSizeScaleY = ScreenHeight/568; }else{ myDelegate.autoSizeScaleX = 1.0; myDelegate.autoSizeScaleY = 1.0; } } |
由于iPhone4s屏幕的高度是480,所以当屏幕尺寸大于iPhone4时,autoSizeScaleX和autoSizeScaleY即为当前屏幕和iPhone5尺寸的宽高比。好比,
若是是5,autoSizeScaleX=1,autoSizeScaleY=1;
若是是6,autoSizeScaleX=1.171875,autoSizeScaleY=1.17429577;
若是是6Plus,autoSizeScaleX=1.29375,autoSizeScaleY=1.2957;
如今咱们获取了比例关系后,先来看一下如何解决代码设置界面时的适配。
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)这个方法使咱们经常使用的设置尺寸的方法,如今我设置了一个相似于这样的方法。
在.m文件中
1 2 3 4 5 6 7 8 9 10 11 |
UIImageView *imageview = [[UIImageView alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];
CG_INLINE CGRect CGRectMake1(CGFloat x, CGFloat y, CGFloat width, CGFloat height) { AppDelegate *myDelegate = [[UIApplication sharedApplication] delegate]; CGRect rect; rect.origin.x = x * myDelegate.autoSizeScaleX; rect.origin.y = y * myDelegate.autoSizeScaleY; rect.size.width = width * myDelegate.autoSizeScaleX; rect.size.height = height * myDelegate.autoSizeScaleY; return rect; } |
这样,这个btn按钮在5,6和6Plus的位置和尺寸比例都是同样的。
若是整个项目作完后才开始作适配的话这个方法的优点就体现出来了,面对几十个工程文件,只需自定义而且替换你的CGRectMake方法,再加上storyBoradAutoLay这个方法就瞬间完成大部分甚至所有的适配,若是遇到tableView的或者其余的手动调整一下便可。