不使用AutoLayout快速兼容适配iPhone6/6 Plus

转载:http://blog.it985.com/5121.html

声明:本文章是为了后期快速兼容6和6Plus的按比例放大方法,对于部分读者来说可能觉得该方法不妥。但是对于复杂的界面还有急于交付项目的人来说还是有一定帮助的。

现在由于苹果公司出了6和6Plus,让写苹果程序的哥们为了做兼容很头疼。用StoryBoard固然方便,但是后期做兼容要花费太多的时间和精力。
使用AutoLayout虽然会在不同尺寸的屏幕下自动布局,但是很多东西还是要自己手动修改,而且使用AutoLayout的话有一个弊病,就是无法通过代码来修改StoryBoard上控件的尺寸和位置。
使用纯代码搭建界面又会觉得不够直观,要花时间调整布局,虽然方便后期做调整兼容性,但是影响开发效率。
当然个人觉得还是代码和StoryBoard结合的方式比较方便。
先说下使用本方法的要求,首先iPhone5的界面一定要完全兼容,这样才能完美兼容6和6Plus。
首先,我么我们要观察一下5,6和6Plus的尺寸比例关系。发现了他们的关系后呆会做兼容就明白了。

很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在5的基础上,按比例放大来兼容6和6Plus的屏幕。

在AppDelegate.h中


1

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尺寸的宽高比。

CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)这个方法使我们常用的设置尺寸的方法,现在我设置了一个类似于这样的方法。
在.m文件中


1

2

3

4

5

6

7

8

9

10

11

UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake1(100, 100, 50, 50)];

CG_INLINE CGRect//注意:这里的代码要放在.m文件最下面的位置

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的位置和尺寸比例都是一样的。iPhone6兼容前

iPhone6兼容后

iPhone6Plus兼容前

iPhone6Plus兼容后

如果整个项目做完后才开始做兼容的话这个方法的优势就体现出来了,面对几十个工程文件,只需自定义并且替换你的CGRectMake方法,再加上storyBoradAutoLay这个方法就瞬间完成大部分甚至全部的兼容。
其实还是比较建议用代码和StoryBoard结合的方式来写代码,无论是从做兼容还是效率来说都是比较好的。
如果遇到tableView的或者其他的兼容改动,手动调整一下即可。

参考http://www.ui.cn/project.php?id=26980

时间: 2024-10-07 22:16:32

不使用AutoLayout快速兼容适配iPhone6/6 Plus的相关文章

StoryBoard不使用AutoLayout情况下 按比例快速兼容适配iPhone6/6 Plus教程

声明:本文章是为了后期快速兼容6和6Plus的按比例放大方法,对于部分读者来说可能觉得该方法不妥.但是对于复杂的界面还有急于交付项目的人来说还是有一定帮助的. 现在由于苹果公司出了6和6Plus,让写苹果程序的哥们为了做兼容很头疼.用StoryBoard固然方便,但是后期做兼容要花费太多的时间和精力.使用AutoLayout虽然会在不同尺寸的屏幕下自动布局,但是很多东西还是要自己手动修改,而且使用AutoLayout的话有一个弊病,就是无法通过代码来修改StoryBoard上控件的尺寸和位置.使

StoryBoard和代码结合 按比例快速兼容iPhone6/6 Plus教程

现在由于苹果公司出了6和6Plus,让写苹果程序的哥们为了做兼容很头疼.用StoryBoard固然方便,但是后期做兼容要花费太多的时间和精力.使用AutoLayout虽然会在不同尺寸的屏幕下自动布局,但是很多东西还是要自己手动修改,而且使用AutoLayout的话有一个弊病,就是无法通过代码来修改StoryBoard上控件的尺寸和位置.使用纯代码搭建界面又会觉得不够直观,要花时间调整布局,虽然方便后期做调整兼容性,但是影响开发效率.当然个人觉得还是代码和StoryBoard结合的方式比较方便.先

StoryBoard和代码结合 按比例快速兼容iPhone6/6 Plus简单教程

文章中的方法有很大的局限性,请谨慎使用! 现在由于苹果公司出了6和6Plus,让写苹果程序的哥们为了做兼容很头疼.用StoryBoard固然方便,但是后期做兼容要花费太多的时间和精力.使用AutoLayout虽然会在不同尺寸的屏幕下自动布局,但是很多东西还是要自己手动修改,而且使用AutoLayout的话有一个弊病,就是无法通过代码来修改StoryBoard上控件的尺寸和位置.使用纯代码搭建界面又会觉得不够直观,要花时间调整布局,虽然方便后期做调整兼容性,但是影响开发效率.当然个人觉得还是代码和

Xcode新工程如何按照原有的方法适配iPhone6和plus大屏幕

我们知道 Xcode6新建工程后,会有main.storybord等,与原来新建项目有较大区别,而且随着iPhone6和plus的到来,屏幕适配也是一个问题,苹果提供了autolayout和 sizeClass来搞定这一块,但是很多人还是不习惯,那么我们如何按照原来的方式进行一个新项目的屏幕适应呢. 首先  我们创建一个新的single工程. 将 main interface清空, 然后在info.plist文件中将Launch screen interface... 删除 然后按照以前的方法添

适配iPhone6和iPhone6 Plus

适配iPhone6和iPhone6 Plus 苹果昨天发布了两款iPhone新产品,分别是iPhone6和iPhone6 Plus,开发者和设计人员又要忙活一阵子了. 先对比所有市面上的iPhone设备,然后分析如何适配新的设备, iPhone4,iPhone4s 分辨率960*640  长宽比1.5 iPhone5,iPhone5s  分辨率1136*640  长宽比1.775 iPhone6 分辨率1334*750  长宽比1.778 iPhone6+ 分辨率1920*1080  长宽比1.

关于移动端meta标签和JS兼容适配

<meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="0"> <meta name="format-detection&q

Android AutoLayout全新的适配方式 堪称适配终结者

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49990941: 本文出自:[张鸿洋的博客] 一.概述 相信Android的开发者对于设配问题都比较苦恼,Google官方虽然给出了一系列的建议,但是想要单纯使用这些建议将设备很轻松的做好,还是相当困难的.个人也比较关注适配的问题,之前也发了几篇关于适配的文章,大致有: Android 屏幕适配方案 Android 百分比布局库(percent-support-lib) 解析与

Android AutoLayout全新的适配方式 堪称适配终结者(转)

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49990941: 本文出自:[张鸿洋的博客] 一.概述 相信Android的开发者对于设配问题都比较苦恼,Google官方虽然给出了一系列的建议,但是想要单纯使用这些建议将设备很轻松的做好,还是相当困难的.个人也比较关注适配的问题,之前也发了几篇关于适配的文章,大致有: Android 屏幕适配方案 Android 百分比布局库(percent-support-lib) 解析与

iOS 开发ui适配iphone6 iphone 6plus

着苹果发布两种新尺寸的大屏iPhone 6,iOS平台尺寸适配问题终于还是来了,移动设计全面进入"杂屏"时代. 所以如何做到交付一套设计稿解决适配大中小三屏的问题?设计和开发之间采用什么协作模式?一个基本思路是: 1.选择一种尺寸作为设计和开发基准: 2.定义一套适配规则,自动适配剩下两种尺寸: 3.特殊适配效果给出设计效果. 当面对大中小三种屏幕需要适配的时候,很容易想到先做好一种屏幕,再去适配剩下两种屏幕.第一个决定是到底以哪种屏幕作为设计和开发的基准尺寸.我们选择中间尺寸的iPh