如何根据不同的屏幕尺寸测量和布局视图

Posted

技术标签:

【中文标题】如何根据不同的屏幕尺寸测量和布局视图【英文标题】:How to measure and layout views based on different screen sizes 【发布时间】:2015-07-02 14:01:23 【问题描述】:

在纵向,我想水平布局 4 个视图。这 4 个视图的宽度相等。以下是从ios resolution 获取的每个 iPhone 宽度的详细信息。

iPhone 4/4s/5/5c/5s 的逻辑分辨率宽度为 320

iPhone 6 的逻辑分辨率宽度为 375

iPhone 6 plus 的逻辑分辨率宽度为 414。

所以每个视图的宽度将是:

iPhone 4/4s/5/5c:320 / 4 = 80(pts)

iPhone 6:375 / 4 = 93.75(pts)

iPhone 6 plus:414 / 4 = 103.5(pts)

我的问题是 iOS 布局系统如何处理这些小数(93.75 和 103.5)。有没有更好的解决方案来处理这种情况而不会丢失像素。

【问题讨论】:

这个问题或许有你的答案:***.com/questions/26373598/…[1]:***.com/questions/26373598/… 【参考方案1】:

SDK 在布局视图时会考虑比例因子。

这就是为什么您会在 @2x 设备上看到小数值为 0.5 或在 @3x 设备上看到小数值为 0.33 和 .66 的“整数”帧。

换句话说,布局系统将努力对齐与设备相关的像素,即使您限制了与设备无关的点。

最好的做法是尝试一个布局,看看它是如何工作的,因为您可能会发现 SDK 已经预料到了这种情况。否则,您将尝试解决非问题。

在 iOS 9 中,Apple 使用 UIStackView 使这变得更加简单。您不需要为视图添加任何约束,因为堆栈视图会(水平)为您布置它们。

【讨论】:

以上是关于如何根据不同的屏幕尺寸测量和布局视图的主要内容,如果未能解决你的问题,请参考以下文章

根据各种屏幕尺寸自动布局集合视图

如何为不同的屏幕尺寸创建具有自动布局的比例视图?

如何通过反应根据屏幕尺寸更改布局

如何使用 Xcode 8 上的自动布局调整对象的大小以适应不同的屏幕尺寸?

如何针对不同的 iPhone 屏幕尺寸在纵向和横向中使用自动布局

针对不同屏幕尺寸的不同视图控制器