添加子视图并使用 AutoLayout 将前沿与超级视图对齐并包裹视图

Posted

技术标签:

【中文标题】添加子视图并使用 AutoLayout 将前沿与超级视图对齐并包裹视图【英文标题】:Add subviews and use AutoLayout to align leading edge with superview AND wrap views 【发布时间】:2014-12-19 12:35:28 【问题描述】:

在 swift 中,我通过按钮以编程方式添加子视图。子视图可以细至 256 点,这意味着它们可以在 iPhone 上水平显示一次,在 iPad 上纵向显示 3 次。在横向模式下,它们可以在 4 英寸 iPhone 上横向放置两次,或者在 iPad 上放置四次。最终,我希望任意数量的子视图水平显示,与超级视图的前缘(左)对齐,从第一个到最后一个,但根据设备大小和旋转进行换行, 以及显示在添加的最后一个子视图下方的按钮。

我原以为这将是 ios 的一种相当常见的设计模式 - 完全被自动布局等自适应系统覆盖 - 但我找不到如何在代码中执行此操作的明确示例。我已经观看了有关自动布局的所有 WWDC 视频并尝试了一些方法,但解决方案 like this one 似乎取决于添加视图时的方向,而不是响应方向的变化。我一定是使用了错误的搜索词。

【问题讨论】:

【参考方案1】:

您最好的选择是使用带有自定义布局的UICollectionView。自动布局没有内容流的概念,只有动态大小。

或者,您可以在 html 中制作界面并将其显示在 UIWebView 中。

【讨论】:

谢谢 - 我必须学习如何做到这一点,然后将问题标记为已回答。

以上是关于添加子视图并使用 AutoLayout 将前沿与超级视图对齐并包裹视图的主要内容,如果未能解决你的问题,请参考以下文章

使用Autolayout时在layoutSubviews中添加子视图是不是正确

如何添加不会破坏且不受AutoLayout影响的半透明背景的子视图?

如何在UIScrollView的xib上添加子控件并添加AutoLayout约束

如何使用 AutoLayout 根据父高度调整子视图高度而不添加/删除约束

Cocoa 自动布局和调整子视图的大小

添加到父视图时向 UITableView 添加 AutoLayout 约束