关于iOS适配问题

大家都知道在iOS开发当中对于UI适配问题可以从如下两个方面去考虑:

1.比例适配

2.利用autolayout自动布局

通常情况来说,利用auto自动布局是一个比较好的方案,开发者可以利用storyboard添加约束,以及sizeclass完美适配,如果你是比较喜欢纯代码的方式的话,那么PureLayout 以及Masonary也是不错的自动布局第三方库(目前项目当中也正在用PureLayout)。但是,相信有不少人会有过这样的困惑,随着控件的约束太多,而导致约束冲突,然而对于自己来说看上去也很烦。我们在刚接触iOS开发的时候应该都是从frame来开始学习布局的,所以从frame的角度去布局的话我们也会很好的去理解。

这里主要探讨一下利用frame在项目中适配iOS屏幕吧!首先我们获取屏幕的宽,高!

#define RRScreenWidth    [UIScreen mainScreen].bounds.size.width

#define RRScreenHeight  [UIScreen mainScreen].bounds.size.height

那么问题来了,iOS设备的尺寸如下


设备

iPhone


Width


Height


对角线

Diagonal


逻辑分辨率(point)


Scale Factor


设备分辨率(pixel)


PPI


3GS


2.4 inches (62.1 mm)


4.5 inches (115.5 mm)


3.5-inch


320x480


@1x


320x480


163


4(s)


2.31 inches (58.6 mm)


4.5 inches (115.2 mm)


3.5-inch


320x480


@2x


640x960


326


5c


2.33 inches (59.2 mm)


4.90 inches (124.4 mm)


4-inch


320x568


@2x


640x1136


326


5(s)


2.31 inches (58.6 mm)


4.87 inches (123.8 mm)


4-inch


320x568


@2x


640x1136


326


6


2.64 inches (67.0 mm)


5.44 inches (138.1 mm)


4.7-inch


375x667


@2x


750x1334


326


6+


3.06 inches (77.8 mm)


6.22 inches (158.1 mm)


5.5-inch


414x736


@3x


(1242x2208->)

1080x1920


401

从宽的角度来说,4s、5、5s为320,6、6s为375,6+为414

从高的角度来说,4s为480,5、5s为568,6、6s为667,6+为736

如果利用宽来进行适配的话那么5和4s会有一点点差异,如果看5和6,我们通常为选择 让 RRScreenWidth/640或者RRScreenWidth/960,这样的话根据微妙的计算来控制其实是可以的,但是在4s上效果其实并不好。

所以我采用了利用屏幕高度进行适配,用RRScreenHeight/1280乘以(你自己给定的高度或者宽度),通过这样就能很好的适配了。自己的一点愚见,希望大家能再开发中能够很好的利用。

时间: 2024-12-13 12:42:55

关于iOS适配问题的相关文章

Masonry记录——iOS适配

Masonry是iOS适配的第三方库,比较好用的一个,本人用的也不多,简单了解一些常用的方法,自己学习中,记录下来共勉. Masonry下载地址:https://github.com/SnapKit/Masonry 示例一:View居中处理 不管什么情况下,view都处于居中状态 __weak typeof(self) weakSelf = self; UIView * view = [UIView new]; view.backgroundColor = [UIColor redColor];

cocos2dx 2.2.5 CCEditBox IOS 适配问题

最近做着CCEditBox 时,发现点击后,里面的文字没有适配的 今天比较,所以解决一下这个问题 找到CCEditBox点击时响应的函数是  CCEditBoxImplIOS::openKeyboard 我们可以看看这个函数写了什么: -(void) openKeyboard { [[EAGLView sharedEGLView] addSubview:textField_];   // 添加 作为 subView [textField_ becomeFirstResponder]; } 完全没

iOS 适配/ autoLayout基本知识

适配历史 iPhone3GS.iPhone4\4s:没有屏幕适配最早开发里面的程序全部都是写死的iPad 旋转出来之后 Autoresizing问世iPhone5\5c\5s兼容各种不同的情况 系统适配 ios版本适配ios6 7 8 9 屏幕适配 iPhone3.5 4.0 4.7 5.5 iPad 7.9 9.7 开发面向点去开发 5s = 320 * 480 6 = 375 * 667 6p = 414 * 736autoResizing 必须关闭autolayout.sizeclass才

IOS 适配的几种模式

1.尺寸适配  1.原因  iOS7中所有导航栏都为半透明,导航栏(height=44)和状态栏(height=20)不再单独占用高度,即View的(0,0)坐标是从屏幕左上角开始的:而在iOS7之前的系统中,导航栏和状态栏单独占用高度,即View的(0,0)的坐标从导航栏下面开始的. 解决方案: 1> 修改window的frame坐标 这个思路是在iOS7系统里面把windows下拉20个pixel,这样可以让开status bar的位置,于是一切都恢复了正常. 好处是不用每个viewCont

iOS 适配iOS9

1.网络接口不支持https协议,在iOS9下 在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据. 解决方案(以下方法2选1): (1)暂时退回到http协议 具体方法: 在项目的info.plist中添加一个Key:NSAppTransportSecurity,类型为字典类型. 然后给它添加一个Key:NSAllowsArbitraryLoads,类型为Boolean类型,值为YES: 2016.01.06更新: 随着SDK版本的更新,这里需要以下更新.

ios 适配 (字体 以及 控件)

ios 字体适配 先看市面上iPhone4.5.6/6p的分辨率: iphone4 : 点数: 320x480 pt 渲染像素: 640x960 px 屏幕分辨率:640x960 px iphone5: 点数: 320x568 pt 渲染像素: 640x1136 px 屏幕分辨率:640x1136 px iphone6: 点数: 375x667 pt 渲染像素: 750x1334 px 屏幕分辨率:750x1134 px iphone6plus: 点数: 414x736 pt 渲染像素: 124

iOS 适配设计与切图

以iphone5作为设计标准:标尺图给的是640,美工给的切图是960坐标系下的素材3x,程序拿到标尺图,640的标尺除以2就是iphone5下的界面,3x的图乘以0.67就是2x. 以iphone6作为设计标准:标尺图给的是750,美工给的切图是1125坐标系下的素材3x,程序拿到标尺图,750的标尺除以2就是iphone6下的界面,3x的图乘以0.67就是2x. 手机淘宝的iPhone 6/iPhone 6 Plus适配版本即将提交App store审核.先晒一下我们采用的协作模式,再慢慢说

iOS适配:Masonry介绍与使用实践:快速上手Autolayout

随着iPhone的手机版本越来越多, 那么对于我们广大的开发者来说就是很悲催,之前一直使用代码里面layout的约束来适配, 现在推荐一个第三方Masonry,上手块,操作简单,只能一个字形容他 “爽”~~~ 进入正题: 1 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-iphone3gs时代 window的size固定为(320,480) 我们只需要简单计算一下相对位置就好了 在i

iOS 适配

 机型变化 坐标:表示屏幕物理尺寸大小,坐标变大了,表示机器屏幕尺寸变大了: 像素:表示屏幕图片的大小,跟坐标之间有个对应关系,比如1:1或1:2等: ppi:代表屏幕物理大小到图片大小的比例值,如果ppi不变,则坐标和像素的比例不会变: iPhone 4以前 iPhone.iPhone3/3G机型未采用retina,坐标是320 x 480,屏幕像素320 x 480 ,他们一一对应,1:1关系.即一个坐标对应1个像素. iPhone 4/4s 机器采用了retina屏幕,坐标是320 x 4