如何根据不同的屏幕尺寸测量和布局视图
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 上的自动布局调整对象的大小以适应不同的屏幕尺寸?