等比缩放公式_iPhone屏幕适配,等比缩放
App的设计图根据是否可以滚动分成两种设计图,下面我们说说这个不可以滚动的设计,怎么在各种不同尺寸的设备中适配。
image.png
这是以iPhone8的尺寸(750*1334)做的效果图。
类似这种页面,就是不可滚动的效果图。
我们按照标注,在xib或者storyboard用autolayout布局;
为了展示效果图,在布局文件底部添加了一个正方形,居中显示
image.png
image.png
image.png
image.png
image.png
同样的布局文件,因为我们的标注是基于iPhone8的尺寸,结果只有iPhone8的显示效果图是满意的,其他设备的的效果图都无法接受。
设备
宽/缩放比
高/缩放比
效果图
750
1334
iPhone4s
640/0.85
960/ 0.72
iPhone5
640/0.85
1136/0.85
iPhone8
750/1.0
1334/1.0
iPhone8 Plus
1242/1.66
2208/1.66
iPhoneX
1125/1.5
2436/1.82
在ios的布局方式中,有一种自动布局叫做Autoresizing。
说明:这种布局方式不能与autolayout同时使用。
image.png
image.png
image.png
image.png
image.png
在不同设备上的效果,总体感觉还是可以,即使在最小的iPhone4s,也是可以显示完整的;但是,红色的正方形控件,在iPhone4s、iPhoneX上面变形了,如果这个正方形是ImageView的话,显示出来的图片也会变形了,这个肯定是不合格的。
但在Autoresizing这种布局上,没办法去处理这个问题。
设备
宽/缩放比
高/缩放比
效果图
750
1334
iPhone4s
640/0.85
960/ 0.72
iPhone5
640/0.85
1136/0.85
iPhone8
750/1.0
1334/1.0
iPhone8 Plus
1242/1.66
2208/1.66
iPhoneX
1125/1.5
2436/1.82
根据上图,各个设备的屏幕宽高与效果图的宽高的缩放比例是不同,只有iPhone8 Plus是近似相同。这就造成了上面的正方形控件变形的原因。
除此之外,我们还能怎么做呢。
image.png
- (void)viewDidLoad {
[super viewDidLoad];
CGRect rect = [UIScreen mainScreen].bounds;
float x = rect.size.width / 375;
float y = rect.size.height / 667;
NSLog(@"screen rect === %@",NSStringFromCGRect(rect));
NSLog(@"y==%@",@(y));
NSLog(@"x==%@",@(x));
// CGRect rect = [UIScreen mainScreen].nativeBounds;
// float x = rect.size.width / 750;
// float y = rect.size.height / 1334;
// NSLog(@"screen rect === %@",NSStringFromCGRect(rect));
// NSLog(@"y==%@",@(y));
// NSLog(@"x==%@",@(x));
//保证宽高的缩放比一致,才不会出现正方形控件变形的情况。
//取缩放比小的那个,才不会出现界面超出屏幕
if(x > y){
self.view.transform = CGAffineTransformMakeScale(y, y);
}else{
self.view.transform = CGAffineTransformMakeScale(x, x);
}
}
代码已经上传了 DEMO
补充
在xib或者storyboard用百分比布局
1.控件宽高的百分比
image.png
image.png
控件的宽高百分比这个简单
1).设置控件自身的宽高比;
2).设置控件的宽度等于父View的宽度,再设置Multiplier的比值(控件宽度:父View的宽度)
这样控件会随着屏幕的大小而缩放,控件自身也有宽高比,不会发生变形。
2.控件宽高的百分比
image.png
两个红色的控件,
第一个是距离左边距37.5的距离;在不同屏幕,这个值是固定的。
第二个是距离父View中线X坐标的0.2倍;在不同屏幕,这个值是变化的。
计算公式(iPhone8):375(屏幕宽)0.5(中线X坐标)0.2(系数)=37.5。
第一个控件:固定左边距
image.png
第二个控件:百分比左边距
image.png
跟第一个控件的用法,主要区别是
SecondItem:SuperView.Center.X;
Constant:0(固定值)
Multiplier:0.2(比例)
这样可以在不同的屏幕中,对比看到两个控件实际左边距的差别。
代码已经上传了 DEMO
等比缩放公式_iPhone屏幕适配,等比缩放相关推荐
- 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配
2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px :是屏幕的像素点 dp :一个基于density的抽象单位,如果一个160dpi的 ...
- Android 屏幕适配
一.适配方式之dp 名词解释 分辨率:480*800,1280*720.表示物理屏幕区域内像素点的总和.(切记:跟屏幕适配没有任何关系) 因为我们既可以把1280*720 的分辨率做到4.0 的手机上 ...
- android wm 改变大小,Android 屏幕适配经验总结
本文记录一些适配问题的研究,基础概念不做过多介绍. Android在做屏幕适配的时候一般考虑两个因素:分辨率和dpi.分辨率是屏幕在横向.纵向上的像素点数总和,一般用"宽x高"的形 ...
- 今日头条屏幕适配方案落地研究
目录 前言 各平板数据比较 为什么看起来更小了?(头条方案跟最小宽度方案比较) smallesWidth 方案迁移 优缺点 issue 附录(适配核心代码) 前言 大家好,现在给大家推荐一种极低版本的 ...
- [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配
http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...
- android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度
为什么要适配,适配的好处等等这里就不说了,直接说我们要怎么适配,请看下面的内容. 1.重要概念 px:pixel,像素Android原生API,UI设计计量单位,如获取屏幕宽高. 屏幕分辨率:指在纵向 ...
- 手机屏幕适配原理及实现
为什么80%的码农都做不了架构师?>>> 手机屏幕是用户与 App 最直接的交互点 不同的分辨率下用户对我们的 App 具有明显的感观差异,主流分辨率的更新迭代却又完全独立于 ...
- Android 系统(186)---最易懂的Android屏幕适配解决方案--总结版
最易懂的Android屏幕适配解决方案--总结版 本文参考自: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 ...
- 浅谈屏幕适配 dp dip sp dpi ppi px sp
一.Drawable资源文件夹之间的关系 Android开发中,UI一般会制作多种图片素材,根据素材的分辨率大小,放在如下几个文件夹中: Android 工程里 res 目录下的 drawable-h ...
最新文章
- java excel 导出_java导出Excel通用方法实例
- 2014-06-27nbsp;20:47
- Pygame实现记录事件到文本中
- 通过Idea创建spring项目,没有spring Initializr选项的解决方法
- word文字中带有数学公式的行间距设置
- 用户密码登录改造实现
- leetcode 365. Water and Jug Problem | 365. 水壶问题(Java)
- JS和OC交互的简单应用
- P1613-跑路【Floyd,倍增】
- 机器学习算法应用30篇(一)-支持向量机(SVM)理论与实践
- BugkuCTF-PWN题canary超详细讲解
- 拳王虚拟项目公社:虚拟资源如何挣钱,小白月入过万的操作思路
- oracle的hr工资待遇,oracle的hr用户里employees表
- Vue.js 2.0 参考手册.CHM下载
- 开源大数据周刊-第32期
- Cgroup 资源配置方法
- 初中计算机考试办公软件office2003安装教程
- wps取消英文首字母大写功能
- qbit linux网页ui不能设置中文,BT下载教程 篇四:qbittorrent 设置补充说明及更换WEB UI...
- 教你百度网盘文件转阿里云
热门文章
- jmeter配置远程运行
- visual studio 2015 启动停止工作, 问题事件名称:APPCRASH 应用程序名:devenv.exe 故障模块名称:
- html 手机录视频,手机怎么录制视频 怎么用手机录视频?
- 《权力的游戏》里,是谁活成了史诗?
- UIAutomatorViewer排查问题
- idea 修改项目名称的方法
- gsm 收发短信 打电话
- 我如何构建一个交互式仪表板Web应用程序以可视化拳击数据
- 四面阿里失败,因得到P8指点痛心修炼3个月,收到字节35*14offer(Java岗)
- maya cmds 笔记_1