iOS开发:iPhone6、6 plus适配
本文转载至 http://jingyan.baidu.com/article/8cdccae97a5c2b315413cda9.html
1
2
3
4
5
6
7
随着苹果公司持续推出新产品,480x960的固定坐标时代悄然过去,iPhone6、iPhone6 plus的问世,无疑给了我们这些做iOS开发的,深刻的打击。坐标再也不能写成固定坐标了,但是随着发展AutoLayout和SizeClass的出现,无疑是一种福音,值得庆贺一点的是,iPhone6也好6plus也好,屏幕比例和iPhone5与5s比例都是一样的,相差一两像素,无伤大碍。今天笔者给大家推荐一种较为轻便的屏幕适配方法。这里笔者就给大家以iPhone工程为例,简单讲述一下。该方法只用在控件中的AutoSizing只勾选宽和高约束,其他约束去掉,即可实现iPhone5与iPhone6、iPhone6plus等比布局,进而实现简单适配。当然iPhone4 需要刷新布局高度。
工具/原料
- Xcode6.0
- Mac OS操作系统
- 电脑
- 三张图片
方法/步骤
首先,先创建一个简单地工程。如图。
这里我们选择“Single View Application”工程。
名字就叫“ZYScreenTest”。
位置选择桌面就可以了。
我们在Main.storyboard中把“Use Auto Layout”和“Use Size Classes”选项勾掉,默认的是勾选上的。
在把我们的ViewController尺寸调节成5s的尺寸或者4的尺寸都行,看个人习惯是在5s上做布局还是4上做布局。笔者这里就以5的屏幕给大家介绍。
选中当前ViewController,中间的选项,进行XIB尺寸调整,这里可以根据习惯选择是3.5寸还是4寸等。
之后我们拖拽一个imageView,放在(110,50)的位置,尺寸设置为(100,100)。如图。
再拖拽一个imageView,尺寸一样,位置放置在(110,240)的位置作对比。如图。
我们的目的是随着屏幕变化,对应控件坐标宽高发生相应可控的变化,以达到屏幕适配的目的。
修改两个ImageView背景颜色作为区分,修改两个ImageView的Autoresizing相同,都已第二个拖拽的imageView为准,选择居上,居右位置不变的约束。如图。
之后,我们给下面的imageView再AutoSizing添加如图约束。去掉上下左右约束,保留内部宽高约束。如图。
好,用5模拟器运行。运行效果如图。会发现没有什么变化,因为我们毕竟是用5的屏幕布局的,所以在5上运行效果和我们布局的界面差不多的。如图。
接下来再用iPhone6plus 模拟器运行,如图。
我们会发现上面的ImageView的autoSizing只添加向上向下约束坐标和宽高都没变,下边的ImageView坐标和宽高都相应的变化了,基本和我们刚才在iPhone5模拟器上运行的基本比例一样。但是两个控件之间的布局已经和我们在StoryBoard上的布局不一样了。
我们给第一个ImageView添加同样约束,再在6plus模拟器上运行,如图,我们会发现其布局和我们在StoryBoard上布局一致。
也就是说在AutoSizing只添加宽高约束的控件,会按照屏幕比例放大。我们都知道iPhone6以上使用的是三倍图,好我们准备三张不同的图片,分别是原图,二倍图,三倍图。这里笔者就随便找三张图了,分别命名为“test.png”(100p*100px),"test@2x.png"(200*200px),“test@3x.png”(300*300px),用来判断分辨率,iPhone6plus和iPhone6默认使用的是@3x图片,iPhone5和5s以及4s使用的是@2x图片。这里是用来验证我们的适配。
在“Images.xcassets”里面创建一个“New Image Set”,重命名为“test”,把我们刚才的三张图片拖进去。如图。
然后对我们刚才拖拽的imageView设置图片。设置图片,直接在“image”属性里面写我们刚才对ImageSet命的名字“test”。我们再用iPhone5模拟器运行,运行效果如图。我们看到5模拟器上运行加载的图片都是@2x图片,也就是二倍图。两个imageView都加载了,说明,我们在AutoSizing中只勾选宽高约束,不影响iPhone5界面布局。我们用iPhone6 plus模拟器运行。如图,说明约束也是不影响加载三倍图的。
接下来,我们进行如图布局,把第一个图片也进行AutoSizing中宽和高约束,去掉上下左右约束,放置同一排,再两个图片中间再添加一个红色的View,放置最上层,依然添加同样约束。如图。用6Plus模拟器运行。发现间距和相对位置和iPhone5上布局一直。
故此,我们可以用这种方法进行界面布局,省去了用SizeClass和AutoLayout的困扰。
END
注意事项
- 如果是iPhone4布局,只用修改一下高度即可,iPhone4布局比例和iPhone5以上不同
- 如果是到屏幕底端的列表,一定要再AutoSizing添加上向下约束。
iOS开发:iPhone6、6 plus适配的更多相关文章
- iOS开发小技巧 - runtime适配字体
iOS开发小技巧 - runtime适配字体 版权声明:本文为博主原创文章,未经博主允许不得转载,有问题可联系博主Email: liuyongjiesail@icloud.com 一个iOS开发项目无 ...
- IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)
继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...
- IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)(转载)
继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...
- iOS开发——UI基础-屏幕适配
一.适配 1.什么是适配?适应.兼容各种不同的情况 2.移动开发中,适配的常见种类 2.1系统适配 针对不同版本的操作系统进行适配 2.2屏幕适配 针对不同大小的屏幕尺寸进行适配 二.点和像素 1.在 ...
- ios开发之--使用xib适配iPhone X
最近在修改一个老项目,里面有很多xib文件,需要适配iPhone X,但是又不想重写页面用代码适配,分享个小方法,也算是个笨办法吧, 适配iPhone X底部,iPhone X底部有34px的操作区域 ...
- iOS开发之--iPhone X 适配:MJRefresh上拉加载适配
问题如下图: 出现原因,phoneX系列手机下方多了34像素的工作区域,所以需要对x全系列手机坐下适配, 解决如下: self.tableView.mj_footer.ignoredScrollVie ...
- iOS开发点滴:iPhone屏幕适配
最近开始做iOS开发,遇到一些小问题和解决方法,记录下. 今天是iPhone屏幕适配 iPhone5出来之后屏幕就有iPhone就有了2种尺寸:3.5寸和4寸,xcode 5 的IB设计器里面界面 ...
- IOS开发之绝对布局和相对布局(屏幕适配)
之前如果做过Web前端页面的小伙伴们,看到绝对定位和相对定位并不陌生,并且使用起来也挺方便.在IOS的UI设计中也有绝对定位和相对定位,和我们的web前端的绝对定位和相对定位有所不同但又有相似之处.下 ...
- iOS开发之#iPhone6与iPhone6Plus适配#Xcode6.0/Xcode6.1上传应用过程中一些变动以及#解决方案#
更新时间2014年11月13日 本博文创建时,只有Xcode6.0, Xcode6.0尝试多次,确实如此 之后在6.1版本经博主少量尝试,确实也有如下问题,现更新下博客! iOS8发布之后,苹果强制 ...
随机推荐
- Spring2.5学习4.2_Proxy实现动态代理(目标类实现随意接口)
静态代理的缺点是在代理类中绑定了固定的接口,不利于扩展,动态代理则不然,通过动态代理能够对不论什么实现某一接口的类进行功能性增强. 在java中动态代理由InvocationHander来实现. He ...
- 一个简单的python爬虫(转)
# -*- coding: utf-8 -*- #--------------------------------------- # 程序:百度贴吧爬虫 # 版本:0.1 # 作者:why # 日期: ...
- mongodb进阶三之mongodb管理
http://blog.csdn.net/stronglyh/article/details/46827141 平时的开发环境win比較多啊,但生产环境要放到unix环境上 一:命令 安装就不少了,网 ...
- springboot服务器部署方式
1.利用maven打包 maven project --> clean --> install 2.云服务器上启动 nohup java -jar /xxx/xxx/xxx.jar > ...
- 点滴积累【JS】---JS小功能(JS实现排序)
效果: 思路: 首先,获得用到的ID,在把得到的<li>数组添加到array数组里面,然后在进行array排序,排序完后再将array中的数据用appendChild添加到ul里面: 代码 ...
- 点滴积累【C#】---使用log4net组件记录错误日志(以文本形式记录)
效果: 描述: 利用log4net组件进行错误日志的记录,log4net记录错误的方式我所了解的有4种,No.1 文本形式记录日志,No.2存储到数据库形式记录日志,No.3控制台控制显示日志,No. ...
- Java创建多线程的三种方法
Java多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...
- 新标准C++程序设计读书笔记_继承和多态
简单继承的例子: #include <iostream> #include <string> using namespace std; class CStudent { pri ...
- NerdTree 学习
http://www.jianshu.com/p/eXMxGx--------------来自大神到博客 到现在为止我仍然不能设置<F2>开启和隐藏目录树.sangxin.
- java创建web服务
java开发web服务的方法有很多,但是常用的就两种一种是开发时用,一种发布时用.开发时使用jax-ws注解的方式开发调试,发布时使用tomcat. 注解方式: http://www.cnblogs. ...