iOS 纯代码屏幕适配

首先说下让自己的程序支持iPhone6和6+,第一种使用官方提供的launch screen.xib,这个直接看官方文档即可,这里不再多述;第二种方法是和之前iPhone5的类似,比较简单,为iPhone6和6+添加两张特殊的png

iPhone6:命名:[email protected]   分辨率:750*1334

6+ 命名:[email protected]  分辨率:1242*2208

注意:

如果要在app的介绍页面里有“为iPhone6,6 plus优化”的字样就必须使用第一种方法,使用第二种方法的话还是会显示“为iPhone5优化”

 

下面说一下纯代码适配

首先iPhone5的界面一定要完全适配,这样才能完美适配6和6Plus。
首先,我么我们要观察一下5,6和6Plus的尺寸比例关系

iOS 纯代码屏幕适配

很明显能看出这三种屏幕的尺寸宽高比是差不多的,因此可以在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尺寸的宽高比。比如,
如果是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的或者其他的手动调整一下即可。

转载自:http://blog.csdn.net/xiaobo16/article/details/42105915

更多相关文章
  • 利用主窗口类实现,QT版:记事本. #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QCloseEvent> #include <QTextEdit> #incl ...
  • 你试过指纹支付吗?昨天,支付宝钱包和三星旗舰机型GALAXY S5率先推出了指纹支付服务,7月起,消费者不必输入繁琐的数字密码,只要在指纹传感器上轻轻一刮,就能成功支付.这是国内首次在智能手机上开展的指纹支付尝试,也意味着国内移动支付产业从数字密码时代跨入了生物识别时代. 对这个新玩意儿,扬州市民既 ...
  • 微软良心之作——Visual Studio Code 开源免费跨平台代码编辑器 在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 预览版外,最大的惊喜莫过于宣布推出免费跨平台的 Visual Studio Code 编辑器了! Vis ...
  •     我们在开发数据库应用的时候,很多时候会使用SQL Server作为后台数据库,但是SQL Server数据库的发布却不想本地数据库那样简单,只需要将建好的数据库文件到目标机中即可.    目前我们有三种方法可以将SQL Server 数据库导入到目标机中的SQL Server数据库系统中.  ...
  • 一个人可以贫贱,但是不能没有梦想:失败.痛苦和坎坷会让我们更加地珍惜未来的生活,会让我们更努力,更渴望成功! 2012年匆匆而过. 2013年即将进入奔3的行列,回首过往,岁月不曾蹉跎而过,生活照样平淡无奇.同行于路上的人越来越少,各自沿着自己的轨迹渐渐地走散了,平庸的人都一样,幸福的人各有各的辉煌 ...
  • 易网科技讯 9月18日消息,有知情人士指出,Twitter最早完成IPO的时间可能在今年11月,并赶在感恩节之前,以尽量避免节后出现的市场忧郁现象.如果Twitter选择在11月或12月完成IPO,公司则不得不在为时21天的路演期间内公布财务细节.IPO通常会在路演完成后的数日内启动.不过考虑到届时 ...
一周排行
  • "你们是做什么的,汽车领域的大众点评?知乎?还是豆瓣?"牛车网的创始人海兰说从她创业开始,这几乎是被问到最多的一个问题.海兰的回答是:"看起来我们融合了这些,但本质上我们都不是" ...
  • 现代社会竞争相当激烈,找工作难,找到一份达到自己期望薪水的好工作更是难上加难.求职人员在抱怨工作难找的同时,一些急需人才的企业则感叹很难招募到理想人才.针对这个问题,美国创业公司Developer Auction推出 ...
  • 微软账户.Outlook.com.邮箱/人脉/日历.OneDrive等公众云服务运行状态监控地址如下:https://status.live.com
  • oracle rowid and postgresql ctid   首先介绍一下oracle rowid,数据库表行中的物理标识 SQL> select rowid from book_info where ...
  •  package sodino.output; / * 整型 int 链表. * <p> * 主要功能:添加,获取,修改,删除整形数据.排序.数据转移. * </p> * <p> ...
  • 故障转移技术在数据中心是很常见的,许多 大型企业都使用了故障转移技术处理服务器故障,数据库故障,甚至是整个数据中心故障.故障转移技术就是创建一个“热站点”或“热备用”同时运行与主站上相 同的系统和服务,理想情况下,当 ...
  •   两个站都早被黑了,没心弄了.该注意的都注意了,除了没定期升级.不靠谱啊.开源软件的安全性是个大问题.
  • "不好意思,我两点还要开一个会,我们尽量压缩时间!" 手里抓着刚从路上买回来的煎饼,余凯像一个学生一样端坐在新公司办公区角落的吧台前,神情真挚,略带狡黠,让人觉得眼前这个人,和中国互联网行业&qu ...
  • <上古卷轴5:天际>是Bethesda出品的史诗性奇幻风格RPG<上古卷轴>系列的第五部作品,它在VGA上的意外公布让玩家在互联网上掀起了一阵关于该作的讨论热潮,大家都期待着该作公布更多详情. ...
  • 为了方便使用man,安装中文手册,具体如下: 版本:CentOS release 6.6 (Final) 中文包:http://pkgs.fedoraproject.org/repo/pkgs/man-pages-z ...