是否可以使用 iOS AutoLayout 创建基于动态网格的布局?
Posted
技术标签:
【中文标题】是否可以使用 iOS AutoLayout 创建基于动态网格的布局?【英文标题】:Is it possible to create a dynamic grid based layout using iOS AutoLayout? 【发布时间】:2013-07-16 09:57:42 【问题描述】:我使用 tableview 来展示一些时间。我想创建以网格格式显示可变数量标签的单元格。请参见下面的示例:
如果我还没有使用UITableView
,我显然可以使用UICollectionView
来实现这一点。
我使用UITableView
是因为我想显示带有节标题的行。我只想要表格单元格中的网格布局而不是表格本身。
我对 AutoLayout 还很陌生,并且在我的整个应用程序中使用它相当成功,但我不确定如何实现这样的动态布局?
注意事项:
标签数量可变 设备可能会旋转,因此需要根据可用宽度水平显示动态数量的标签。 所有标签都需要在网格中对齐(见截图)这可以使用 AutoLayout 吗?
【问题讨论】:
是的,绝对有可能...oliverfoggin.com/an-auto-layout-experiment 现在看看就会写出答案。 您想要的最大“列”数是多少?还是会根据内容而改变? @Fogmeister 列数需要根据 superview 的 bounds.width 动态变化。理想情况下,它会在 iPhone 上纵向显示 4 列。因为它只是时间所有标签都可以具有相同的宽度。 @Fogmeister 该链接看起来非常有趣。期待您的回答。 @Fogmeister 我看过你的项目,它看起来令人印象深刻。虽然它确实需要预先了解我不一定知道的列数,因为我的所有标签都具有内在的内容大小。此外,使用 AutoLayout 似乎需要做很多工作。自己管理框架会不会更容易。目前我决定不使用 AutoLayout 进行这种布局,除非我找到实现所需结果的方法。 【参考方案1】:最后使用了 UICollectionView 而不是 UITableView 并实现了模仿 UITableView 节标题的 Header 视图。
【讨论】:
以上是关于是否可以使用 iOS AutoLayout 创建基于动态网格的布局?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Autolayout iOS 在两个视图之上设置视图
iOS AutoLayout 自动调整整个表格(不是单元格!)高度