16、iOS屏幕等比例适配
16、iOS屏幕等比例适配
- 1、基础概念
- 1.1 分辨率相关的概念
- 如果使用物理像素
- 如果使用点
- 1.2 1x、2x、3x的含义
- 2、适配的过程
- 2.1 从UI到开发
- 2.2 适配规则
- 等比缩放
- 变大后的失真的问题
- 适配基础规则
- 文字流式(fluid)
- 控件弹性(flexible)
- 图片等比缩放(scale)
- 举例
- 3、xib等比缩放适配
- 3.1 xib构建的界面约束采用百分比布局布局
- 设置宽度
- 固定宽高比,设定其 Aspect Ratio
- 设置view与父容器边距
- 4、通过代码的方式控制
1、基础概念
1.1 分辨率相关的概念
- 点(Points):
是iOS开发中引入的抽象单位,称作点。开发过程中所有基于坐标系的绘制都是以point作为单位,在iPhone 2G,3G,3GS的年代,point 和屏幕上的像素是完全一一对应的,即 320 * 480 (points), 也是 320 * 480 (pixels) - 渲染像素 (Rendered Pixels):
Rendered Pixels: 渲染像素, 以 point 为单位的绘制最终都会渲染成 pixels,这个过程被称为光栅化。基于 point 的坐标系乘以比例因子可以得到基于像素的坐标系,高比例因子会使更多的细节展示,目前的比例因子会是 1x,2x,3x - 物理像素(Physical Pixels):
Physical Pixels: 物理像素,就是设备屏幕实际的像素 - 设备屏幕的物理长度(Physical Device):
Physical Device: 设备屏幕的物理长度,使用英寸作为单位。比如iPhone 4屏幕是3.5英寸,iPhone 5 是4英寸,iphone 6是4.7英寸,这里的数字是指手机屏幕对角线的物理长度。实际上会是Physical Pixels的像素值(而不是Rendered Pixels的像素值)会渲染到该屏幕上, 屏幕会有 PPI(pixels-per-inch) 的特性,PPI 的值告诉你每英寸会有多少像素渲染。
如果使用物理像素
来看一下,一个100px的正方形在不同手机下的打开的效果。
iPhone 3GS和iPhone 4的屏幕大小一样,但是iPhone 4的像素密度是iPhone 3GS的2两倍。所以一样100px的正方形,在iPhone 4上看起来像是缩小了一倍。在iPhone 4和iPhone 6上的显示大小是一样的。
如果使用点
00pt的正方形在不同手机下打开的效果是如何的。
1.2 1x、2x、3x的含义
屏幕模式,描述的就是屏幕中一个点有多少个 Rendered Pixels 渲染,对于2倍屏(又称 Retina 显示屏),会有 2 * 2 = 4 个像素的面积渲染,对于3倍屏(又称 Retina HD 显示屏),会有 3 * 3 = 9 个像素的面积渲染。
iOS 开发中,所有控件的坐标以及控件大小都是以点为单位的,假如我在屏幕上需要展示一张 20 * 20 (单位:point)大小的图片,那么设计师应该怎么给我图呢?这里就会用到屏幕模式的概念,如果屏幕是 2x,那么就需要提供 40 * 40 (单位: pixel)大小的图片,如果屏幕是 3x,那么就提供 60 * 60 大小的图片。
2x屏幕的设备会自动加载 xxx@2x.png
命名的图片资源,3x屏幕的设备会自动加载 xxx@3x.png
的图片, 现在基本没有 1x屏幕的设备了,可以不用提供这个分辨率的图片了。
2、适配的过程
我们以iPhone 6的例子来看看适配的过程。
2.1 从UI到开发
开发实际使用的单位是pt。而UI给出的视觉稿是以px为单位的。所以,首先需要将px转化成pt。
在这一步,要搞清楚UI给出的视觉稿以什么分辨率作为基准。如果是iPhone 6的640 × 960px,则用@2x作为缩放因子。如果是iPhone 6 Plus的1242 × 2208px(注意,不是1080 × 1920px),则用@3x作为缩放因子。
假设以iPhone 6作为基准,需要绘制一个40px的按钮。以@2x进行缩放,开发以20pt进行绘制。
2.2 适配规则
等比缩放
iPhone 5和iPhone 6/7/8 和 iPhone 6/7/8 Plus之间虽然屏幕尺寸变大了,但是,其比例都是16:9。
通过弹性放大的方式将其等比的放大来适应屏幕的变化。
可以看到,不同的屏幕尺寸不一样,可是显示的内容却是一致的。
变大后的失真的问题
因为图标通常都是位图。所以不可以避免的,经过拉大后图标会出现失真的问题。
为此iPhone提供了一套解决方案。为不同分辨率的设备提供不同分辨率的图标。iPhone 3GS~iPhoneX有着三种不同的缩放因子,根据不同的缩放因子,我们需要提供三种分辨率的图标:@1x/@2x/@3x。
UI以icon.@1x.png/icon.@2x.png/icon.@3x.png
为命名,程序自动根据不同的屏幕使用不同的icon图标。
适配基础规则
文字流式(fluid)
屏幕变大时,保持文字大小不变,随着屏幕变大,横向拉宽文字的显示区域。
为什么要保持文字大小不变
字体不是越大越好的。通过测试,iPhone的字体大概在20px~36px时(排除某些特殊的设计),会得到比较良好的阅读体验。保持字体大小在一定范围内,就是为了保证阅读起来比较舒服。
控件弹性(flexible)
屏幕变大时,保持控件大小不变,随着屏幕的变大,横向调整控件的相对位置。
相比于将控件固定在某个位置上,这种布局能更好地保持控件在页面上的平衡。同时,也能保证屏幕变大的时候,控件不会因为被拉大而失真。
图片等比缩放(scale)
对于图片,屏幕变大时,没办法只拉伸横向的,这样会导致图片的比例失调。所以,对于图片,要保证等比放大。也就是说,在宽度跟随屏幕变大的时候,高度也等比地变大。
图片相对于图标来说,有更高的像素,所以拉大图片失真的效果并不明显。
举例
3、xib等比缩放适配
3.1 xib构建的界面约束采用百分比布局布局
设置宽度
设置相对于容器宽度的百分比
固定宽高比,设定其 Aspect Ratio
设置view与父容器边距
4、通过代码的方式控制
16、iOS屏幕等比例适配相关推荐
- Android 适配18:9 和 16:9 屏幕尺寸比例的问题
1.问题: 在华为Mate 9 中,1080X1920分辨率,480dpi,XXhdpi, 1dp = 3px; 按照设计的尺寸去做,最后出来的跟UI 的图,竖向上差距很大,因为我的竖向上同样70dp ...
- iOS XIB等比例适配
选择两个视图使其等宽高,再去约束里面就可以设置乘数因子. 简单的一个例子: 要求:设置白色视图的宽度为蓝色视图的一半 1.点击白色视图连线到父视图,选择 Equal Widths 2.选择右边第五个 ...
- (转)iOS 屏幕适配
参考 微信的多屏适配 目前为止,iPhone屏幕尺寸已经有四种: 3.5(inch):1/3G/3GS/4/4S 4.0(inch):5/5S/5C 4.7(inch):6 5.5(inch):6Pl ...
- iOS 屏幕适配浅谈
作者 | 钱凯 杏仁移动开发工程师,前嵌入式工程师,关注大前端技术新潮流. 前端开发的屏幕适配其实算是基本功,每个码农在长期实践中都有自己的总结. 在 iOS 平台上,苹果爸爸对适配的支持个人感觉很不 ...
- iOS 屏幕尺寸、分辨率、适配
1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...
- IOS 屏幕适配(一)理论篇
IOS 屏幕适配(一)理论篇 1. IOS 屏幕适配基本概念 1.1 IOS 设备的尺寸和分辨率 1.1.1 分辨率相关概念 1.1.2 IOS 各个设备对应的分辨率 1.2 设计和开发之间的多屏适配 ...
- IOS 屏幕适配理论篇
@[TOC](IOS 屏幕适配(一)理论篇) 1. IOS 屏幕适配基本概念 1.1 IOS 设备的尺寸和分辨率 1.1.1 分辨率相关概念 点(Points): 是iOS开发中引入的抽象单位,称作点 ...
- iOS 屏幕尺寸、分辨率、适配、UI规范
.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2 ...
- iOS屏幕适配-iOS笔记
学习目标 1.[了解]屏幕适配的发展史 2.[了解]autoResizing基本用法 3.[掌握]autoLayout 的基本用法 4.[掌握]autoLayout代码实现 5.[理解]sizeCla ...
最新文章
- CenterNet算法快速入门
- Leetcode | Maximal Rectangle
- 239 Sliding Window Maximum 滑动窗口最大值
- jQuery快速学习
- CentOS7 设置主机名及IP映射
- 中班音乐计算机反思,中班歌曲《不再麻烦好妈妈》活动反思
- 【luogu P1343 地震逃生】 题解
- linux下安装配置jdk(解压版)
- C#实现文件与二进制互转并存入数据库
- 谈谈社区、产品和新Dubbo | 从Dubbo 的社区star 数突破 2 万说起
- react前端显示图片_在 React 中使用 SVG 图标组件
- Android应用开发(11)---动画资源
- nyoj112指数运算
- 响应式网页设计学习笔记
- android启动其他apk,Android 启动apk的常用方法
- hadoop大数据工程师、数据开发工程师、数据仓库工程师 面试题目分享
- JAVA上传文件图片到服务器保存
- 关于预答辩研究生汇报内容及方式的几点要求
- solr(二)Using SolrJ
- 【女人8大隐私部位越丑越健康】