iOS8 屏幕适配问题。

最近在做关于iPhone6,6+,以及你给iOS8 的适配。

在此做一小结。

iOS多屏幕中适配的实现设计到以下几个方面。

1、宏定义:

原理:通过定义宏定义获取屏幕的宽高,从而可以动态定位视图中元素的大小和位置。

适用于: 屏幕尺寸较少,内容显示单一,满足于元素放大、缩小等较单一的呈现。

缺点:随着iPhone设备种类的增多,屏幕尺寸趋于多样化,此方式的实现变的复杂。 若需求为,针对不同的平布尺寸,屏幕显示的内容多少不同, 方式不同,

这样的需求,宏定义实现起来也是相当的复杂。

2、autolayout:

基于约束:和以往定义frame的位置和尺寸不同,AutoLayout的位置确定是以所谓相对位置的约束来定义的,比如x坐标为superView的中心,y坐标为屏幕底部

上方10像素等。

描述性 : 约束的定义和各个view的关系使用可视化语言的方法来进行描述。

布局系统 : 用来负责界面的各个元素的位置。

优点:解决了不同分辨率和屏幕尺寸下view的适配问题,另外也简化了旋转时view的位置的定义。

3、sizeclass

原理:Size Classes其实就是将iOS设备屏幕的Size进行分类,宽度和高度都各分为3种情况:紧凑(Compact)、规则
(Regular)、任意(Any),其中“任意”(Any)包含  
                紧凑(Compact)、规则(Regular)类型。3x3共9种Size,每种Size都可以设置特定的一套布局,如果不特殊指定,默认是在(宽任意,高任意)模式下设置,
                且其他8种布局继承它。Size Classes是将屏幕尺寸的种类做了进一步的抽象。

优点:Autolayout的出现使得布局的复杂度减少到了View与View的关系上,再由根 View(也就是屏幕)指定frame,随后所有子View相对布局,把frame的概念                     归一化到根View的frame上;但有了Size
Class后,根视图的frame概念也被移除了,这下整个app的UI和frame这个单词已然脱离关系,这也正是apple想

要达到的目。

通过SizeClasses简单的表达如下:

iPhone4S,iPhone 5/5s,iPhone 6

竖屏:(w:Compacth:Regular)

横屏:(w:Compacth:Compact)

iPhone6Plus

竖屏:(w:Compacth:Regular)

横屏:(w:Regularh:Compact)

iPad

竖屏:(w:Regularh:Regular)

横屏:(w:Regularh:Regular)

AppleWatch(猜测)

竖屏:(w:Compacth:Compact)

横屏:(w:Compacth:Compact)

4、关于图片:

物理尺寸                   分辨率                   图片                 尺寸

iPhone 3gs                       320*480                    320*480                 @1x                 3.5

iPhone 4,   4s                   320*480                    640*960                 @2x                 3.5

iPhone 5,   5s                   320*568                    640*1136               @2x                  4.0

iPhone 6,                          375*667                    700*1334               @2x                 4.7

iphone 6+                         408*736                    1243*2208             @3xs                5.5

时间: 2024-08-01 10:21:40

iOS8 屏幕适配问题。的相关文章

ios8新特性屏幕适配之sizeclass

ios8推出也有一段时间了,由于时间比较紧,所以没去学习ios8的新特性, 随着iphone6,6+的推出,ios屏幕适配是一个大问题,如何成功适配各种尺寸以及ipad呢? 苹果公司为了解决这个问题给出了新技术sizeclass 下面是我对sizeclass学习的一些笔记,希望对大家有用: 1>屏幕适配的发展历程 代码计算frame -> autoreszing(父控件和子控件的关系ios6) -> autolayout(任何控件都可以产生关系ios7) -> sizeclass(

IOS开发指南第四章 IOS8多分辨率屏幕适配 学习

1 获取IOS设备屏幕信息 CGSize iOSDeviceScreenSize = [UIScreen mainScreen].bounds.size; NSString *s = [NSString stringWithFormat:@"%.0f x %.0f", iOSDeviceScreenSize.width, iOSDeviceScreenSize.height]; 获取设备信息判断是否是ipone-判断横屏还是竖屏-判断设备型号 属性userInterfaceIdiom是

034-iOS屏幕适配-iOS笔记

学习目标 1.[了解]屏幕适配的发展史 2.[了解]autoResizing基本用法 3.[掌握]autoLayout 的基本用法 4.[掌握]autoLayout代码实现 5.[理解]sizeClass的基本用法 一.屏幕适配的发展史 随着iOS屏幕尺寸越来越多样化,屏幕适配也就越来越重要了. iphone1 - iphone3gs时代,window的size固定为(320,480).我们只需要简单计算一下相对位置就好了,不需要做屏幕适配. iphone4 - iphone4s时代,苹果推出了

iOS屏幕适配的几种方式

屏幕适配问题共有四种解决方案:(1)根据屏幕宽高写控件frame(下策);(2)Autoresizing的使用(中策);(3)AutoLayout的使用(上策);(4)sizeClasses+AutoLayout的使用(上上策).下面将会分别来进行叙述. (1)根据屏幕宽高写控件frame 利用宽高比,在不同的屏幕中来进行对控件的位置与控件的宽高进行等比例缩放.选定一个型号的屏幕的宽高为基准,进行等比例缩放.例如以iPhone6或者iPhone6s为基准. 其宽高分别是375与667.Iphon

iOS屏幕适配

一.iOS屏幕适配发展历程 设备 适配技术 4及以前(iPad未出) 直接用代码计算 有了iPad autoResizing 有不同屏幕的iPhone后 autoLayout 有更多不同屏幕的iPhone后 sizeClass 二.各个技术的特性 1. 直接用代码计算 由于屏幕的大小都一样,只有横竖屏的情况,可以直接计算 2. autoResizing 适合于控件与其父控件的关系 各属性的解释 属性 解释 UIViewAutoresizingNone 不会随父视图的改变而改变 UIViewAut

iOS - 屏幕适配-之自动适配

最近把xcode升级到7,然后就是各种蛋疼的问题,出现,期中有一个就是屏幕适配的问题,由于 我的项目比较老,所以,一直没怎么注意过屏幕适配,都是ios 自动适配,这在ios8 之前都没有问题,但是在ios9后,这个问题就出现了,启动程序后,,出现上下边黑屏,找了些资料,弄明白: 从Xcode6 GM版本开始,模拟器新增了iPhone6和iPhone6 Plus两种,如果旧的工程直接跑到这两个模拟器中时,默认是"兼容模式",即系统会简单的把内容等比例放大,显示效果有些模糊但尚可接受.此时

屏幕适配问题的总结

屏幕适配的解决方案: 1.使用frame:可以使用[UIScreen mainScreen].bounds.size.height来判断是哪个版本,根据屏幕的宽高进行计算控件的大小位置,这种方法,代码复杂,容易出错;而且维护难度大,灵活性极差,一些子控件的布局如果各个版本没有变化,可以使用frame来设置. 2.Autoresizing:它只能设置子控件随着父控件的改变而改变,对于兄弟控件关系的调整无法实现. 3.Autolayout:iOS6之后出现的,iOS7才得到很好的推广,能够很轻松的进

iOS开发屏幕适配问题解决方案

屏幕适配问题共有四种解决方案:(1)根据屏幕宽高写控件frame(下策):(2)Autoresizing的使用(中策):(3)AutoLayout的使用(上策):(4)sizeClasses+AutoLayout的使用(上上策).下面将会分别来进行叙述. (1)根据当前屏幕的宽高写frame 在新特性界面中,根据:[UIScreen mainScreen].bounds.size.height.来判断用户的屏幕长度,来判断时3.5寸,4寸,4.7寸,5.5寸,以此来设置新特性中图片选用哪套. 常

ios之开发屏幕适配和系统版本适配

ios软件开发过程中很重要的一点是对系统和屏幕进行适配对系统的适配主要是IOS7以后和之前以及IOS8新增特性,屏幕适配主要是对不同设备采用不同的布局以最佳展示效果展现给用户. 针对系统的适配: IOS7以后和之前 <span style="font-size:18px;background-color: rgb(255, 255, 255);">#define IOSVersion [[[UIDevice currentDevice] systemVersion] flo