如何在 swift xcode 故事板中正确使用纵横比?
How to correctly use aspect ratio in swift xcode storyboard?
我整天都在为这件事绞尽脑汁。我试图让 iphone 6s 反映 iphone 12 显示的内容。我不擅长自动布局,但我只是想要一个想法或一个正确方向的观点,这样我就可以让它看起来像它的对应物。感谢所有帮助。
(P.S 我正在使用故事板,但从未尝试以编程方式进行。)
感谢所有帮助。
如果您想使用情节提要来处理这个问题,这就是所有限制的游戏。
有多种方法可以实现此目的UI。您可以使用 UICollectionView 并使用 UICollectionViewCells 在每列中显示 2 个单元格来管理数据,或者您可以使用 UIStackView 轻松管理您的 UI。
如果您想要方形,则必须使用 UIScrollView,因为 UI 可以超过屏幕高度。如果没有,只需将您的视图放入 UIStackView 并让它自己处理您的一些 UI 约束。
总体思路...
- 使用包含 3“行”水平堆栈视图的垂直堆栈视图
- 每个水平堆栈视图包含两个“tile”
UIView
s
- 在所有堆栈视图上设置
Alignment: Fill
、Distribution: Fill Equally
和 Spacing: 0
- 给第一个视图(在这个图像中,红色视图)一个宽高比约束......从你的图像来看,它看起来像你想要的
3:2.5
- 将堆栈视图嵌入“容器”
UIView
- 我称之为 GridView
- 在所有 4 个边上限制堆栈视图
>= 12
- 也 在所有 4 个边上约束堆栈视图
= 12
,但给出这些约束 Priority: High (750)
... 这将导致自动布局为“将堆栈视图拉到边缘,但如果需要允许它变窄
- 然后我们也给堆栈视图中心垂直和水平约束
- 将 GridView 限制为零前导、尾随和底部
这将为您提供 6 个图块,这些图块将根据设备尺寸保持其纵横比,并且如果需要,它会将垂直堆栈视图居中:
下一步是在每个“平铺”视图中嵌入一个“圆角边框”视图,将其限制在所有 4 个边上的 8 磅(或多或少以获得您想要的“间距”):
这是 iPhone 12 和 iPhone 6s 的结果:
如您所见,标签与横幅和网格视图之间的垂直 较少 space,水平 稍微多一些 space 在堆栈视图的两侧。
这是故事板源代码的 link 和我为此使用的 class 文件,因此您可以尝试一下并检查元素。我用的只是足以证明。您可能想要制作一个包含圆角边框视图和标签的自定义“平铺”视图 class:
https://gist.github.com/DonMag/8a0b2d85bbbb4262e43d73e745826ee5
我整天都在为这件事绞尽脑汁。我试图让 iphone 6s 反映 iphone 12 显示的内容。我不擅长自动布局,但我只是想要一个想法或一个正确方向的观点,这样我就可以让它看起来像它的对应物。感谢所有帮助。
(P.S 我正在使用故事板,但从未尝试以编程方式进行。)
感谢所有帮助。
如果您想使用情节提要来处理这个问题,这就是所有限制的游戏。
有多种方法可以实现此目的UI。您可以使用 UICollectionView 并使用 UICollectionViewCells 在每列中显示 2 个单元格来管理数据,或者您可以使用 UIStackView 轻松管理您的 UI。
如果您想要方形,则必须使用 UIScrollView,因为 UI 可以超过屏幕高度。如果没有,只需将您的视图放入 UIStackView 并让它自己处理您的一些 UI 约束。
总体思路...
- 使用包含 3“行”水平堆栈视图的垂直堆栈视图
- 每个水平堆栈视图包含两个“tile”
UIView
s - 在所有堆栈视图上设置
Alignment: Fill
、Distribution: Fill Equally
和Spacing: 0
- 给第一个视图(在这个图像中,红色视图)一个宽高比约束......从你的图像来看,它看起来像你想要的
3:2.5
- 将堆栈视图嵌入“容器”
UIView
- 我称之为GridView
- 在所有 4 个边上限制堆栈视图
>= 12
- 也 在所有 4 个边上约束堆栈视图
= 12
,但给出这些约束Priority: High (750)
... 这将导致自动布局为“将堆栈视图拉到边缘,但如果需要允许它变窄 - 然后我们也给堆栈视图中心垂直和水平约束
- 将 GridView 限制为零前导、尾随和底部
这将为您提供 6 个图块,这些图块将根据设备尺寸保持其纵横比,并且如果需要,它会将垂直堆栈视图居中:
下一步是在每个“平铺”视图中嵌入一个“圆角边框”视图,将其限制在所有 4 个边上的 8 磅(或多或少以获得您想要的“间距”):
这是 iPhone 12 和 iPhone 6s 的结果:
如您所见,标签与横幅和网格视图之间的垂直 较少 space,水平 稍微多一些 space 在堆栈视图的两侧。
这是故事板源代码的 link 和我为此使用的 class 文件,因此您可以尝试一下并检查元素。我用的只是足以证明。您可能想要制作一个包含圆角边框视图和标签的自定义“平铺”视图 class:
https://gist.github.com/DonMag/8a0b2d85bbbb4262e43d73e745826ee5