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通常会在路演完成后的数日内启动.不过考虑到届时 ...
一周排行
  • 这是在java web中启动tomcat遇到的问题,因为这个问题,整整折腾了两天的时间,找了很都解决方案,但终究还是不能正常.现在整理下这个问题的解决方案: 首先,出这个问题之前,请检查一下的问题,这是最基本的前提: ...
  • 易网科技讯 10月21日消息,据国外媒体报道,诺基亚公司周四宣布将在全球范围内裁员1800人,主要涉及Symbian智能手机开发部门.诺基亚服务部门和部分职能部门. 诺基亚在官方声明中称,"人事变动的决定总 ...
  • 近期测试vcenter5升级至5.1,在vmware ESXI虚拟机上安装Windows 2008 R2 STD SP1系统,安装完成后D盘可以正常读取和新建文件夹,安装vmware tools.加域,一切正常.更新 ...
  • 百度将注资百度人才近亿元易网科技讯 9月20日消息,知情人士透露,原智联招聘集团副总裁李珍文已加盟百度旗下招聘网站百度人才任CEO:原智联招聘代理CTO刘平川出任百度人才CTO.另外,百度人才将于近期大改版,更名为百 ...
  • 网页里有两种盒子模型标准一是W3C盒子模型:二是IE盒子模型(IE浏览器默认的模型)下面就用公式来区分这两种不同的盒子模型 网页盒子模型存在两种: 1:标准W3C盒子模型: 2:IE盒子模型(IE浏览器默认的模型). ...
  • Quartz是运用最广的任务调度框架,它最核心的组成部分是Scheduler.Trigger.JobDetail,然后给Scheduler配置个线程QuartzSchedulerThread,此线程在Schedule ...
  • 本报讯(记者牛颖惠 李斌)昨天,NEC中国公司与东软联合宣布,将斥资5万元共同组建合资公司,在中国开展云计算业务. 东软高级副总裁李军透露,NEC中国公司在合资公司中出资70%,东软出资30%,合资公司将以NEC和东 ...
  • 超级搞笑的个性签名 偷吃不是我的错,是我嘴巴的寂寞. 我是悬崖上的一朵花,死活没人看见把我夸 谁说男生不能穿超短迷你裙的.爷,我就穿过. 我站在你的城府里大声叫到:哎哟!满深的啊! 解释就是掩饰.掩饰就是不老实,不老 ...
  • package com.eshore.sweetop.exdataframe;public class BinomialHeap {    private BinomialNode head;    public B ...
  • 今天碰到一个Joomla!网站被感染,PHP文件全部被了一个INFECTED文件.网站被Block而无法正常访问.想要保护你的Joomla!网站免被黑客截获,可以使用如下方法降低风险:1) 首先隐藏你的管理员页面,通 ...