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屏幕适配,等比缩放相关推荐

  1. 【转】Android中dp,px,sp概念梳理以及如何做到屏幕适配

    2019独角兽企业重金招聘Python工程师标准>>> 首先来看一下他们的基本概念: px   :是屏幕的像素点 dp   :一个基于density的抽象单位,如果一个160dpi的 ...

  2. Android 屏幕适配

    一.适配方式之dp 名词解释 分辨率:480*800,1280*720.表示物理屏幕区域内像素点的总和.(切记:跟屏幕适配没有任何关系) 因为我们既可以把1280*720 的分辨率做到4.0 的手机上 ...

  3. android wm 改变大小,Android 屏幕适配经验总结

    本文记录一些适配问题的研究,基础概念不做过多介绍. Android在做屏幕适配的时候一般考虑两个因素:分辨率和dpi.分辨率是屏幕在横向.纵向上的像素点数总和,一般用"宽x高"的形 ...

  4. 今日头条屏幕适配方案落地研究

    目录 前言 各平板数据比较 为什么看起来更小了?(头条方案跟最小宽度方案比较) smallesWidth 方案迁移 优缺点 issue 附录(适配核心代码) 前言 大家好,现在给大家推荐一种极低版本的 ...

  5. [转]Android中dp,px,sp概念梳理以及如何做到屏幕适配

    http://blog.csdn.net/jiangwei0910410003/article/details/40509571 今天又开始我的App开发,因为之前一直做的是SDK,所以涉及到界面UI ...

  6. android 屏幕分辨率 屏幕密度,Android屏幕适配——多分辨率多屏幕密度

    为什么要适配,适配的好处等等这里就不说了,直接说我们要怎么适配,请看下面的内容. 1.重要概念 px:pixel,像素Android原生API,UI设计计量单位,如获取屏幕宽高. 屏幕分辨率:指在纵向 ...

  7. 手机屏幕适配原理及实现

    为什么80%的码农都做不了架构师?>>>    手机屏幕是用户与 App 最直接的交互点  不同的分辨率下用户对我们的 App 具有明显的感观差异,主流分辨率的更新迭代却又完全独立于 ...

  8. Android 系统(186)---最易懂的Android屏幕适配解决方案--总结版

    最易懂的Android屏幕适配解决方案--总结版 本文参考自: Google的官方权威适配文档 郭霖:Android官方提供的支持不同屏幕大小的全部方法 Stormzhang:Android 屏幕适配 ...

  9. 浅谈屏幕适配 dp dip sp dpi ppi px sp

    一.Drawable资源文件夹之间的关系 Android开发中,UI一般会制作多种图片素材,根据素材的分辨率大小,放在如下几个文件夹中: Android 工程里 res 目录下的 drawable-h ...

最新文章

  1. java excel 导出_java导出Excel通用方法实例
  2. 2014-06-27nbsp;20:47
  3. Pygame实现记录事件到文本中
  4. 通过Idea创建spring项目,没有spring Initializr选项的解决方法
  5. word文字中带有数学公式的行间距设置
  6. 用户密码登录改造实现
  7. leetcode 365. Water and Jug Problem | 365. 水壶问题(Java)
  8. JS和OC交互的简单应用
  9. P1613-跑路【Floyd,倍增】
  10. 机器学习算法应用30篇(一)-支持向量机(SVM)理论与实践
  11. BugkuCTF-PWN题canary超详细讲解
  12. 拳王虚拟项目公社:虚拟资源如何挣钱,小白月入过万的操作思路
  13. oracle的hr工资待遇,oracle的hr用户里employees表
  14. Vue.js 2.0 参考手册.CHM下载
  15. 开源大数据周刊-第32期
  16. Cgroup 资源配置方法
  17. 初中计算机考试办公软件office2003安装教程
  18. wps取消英文首字母大写功能
  19. qbit linux网页ui不能设置中文,BT下载教程 篇四:qbittorrent 设置补充说明及更换WEB UI...
  20. 教你百度网盘文件转阿里云

热门文章

  1. jmeter配置远程运行
  2. visual studio 2015 启动停止工作, 问题事件名称:APPCRASH 应用程序名:devenv.exe 故障模块名称:
  3. html 手机录视频,手机怎么录制视频 怎么用手机录视频?
  4. 《权力的游戏》里,是谁活成了史诗?
  5. UIAutomatorViewer排查问题
  6. idea 修改项目名称的方法
  7. gsm 收发短信 打电话
  8. 我如何构建一个交互式仪表板Web应用程序以可视化拳击数据
  9. 四面阿里失败,因得到P8指点痛心修炼3个月,收到字节35*14offer(Java岗)
  10. maya cmds 笔记_1