iOS:自动布局动态数量的项目
Posted
技术标签:
【中文标题】iOS:自动布局动态数量的项目【英文标题】:iOS: AutoLayout a dynamic number of items 【发布时间】:2018-01-16 09:09:01 【问题描述】:我正在尝试重新创建如下所示的视图。对我来说困难在于其中一些元素会有不同数量的实例。
第一项是带有多行变量的 UILabel。总会有这一项。 UIImageView。这可以有零个或一项。 UIButton 零个或多个(至少最多 3-4 个)。如何做到这一点?
实现这一目标的最佳做法是什么?我有一个使用 UITableView 的想法,只需将每个元素放在表格视图单元格中。但这感觉像是一个有点hacky的解决方案。特别是因为我必须删除表格的默认样式(边框和填充)。
另一种解决方案是使用只有一列的 UICollectionView。
第三种解决方案是建立在我拥有的自动布局解决方案的基础上,并通过大量 if 语句和 for 循环来实现它。这似乎是一个糟糕的解决方案。
那么我将如何实现这一点(使用最佳实践)?例如,将 UITableView 用于纯布局目的通常是不是一个坏主意?
【问题讨论】:
【参考方案1】:创建一个 UIStackView 并在其中为每个具有零个或多个实例的项目创建另一个
当你想添加一个按钮到按钮 stackView 时添加使用这个
btnsStackView.addArrangedSubview(btn)
UILabels 和 UIImageViews 相同
检查一下它可能会有所帮助
for i in 0...5
let headerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))
if(i % 2 == 0)
headerView.backgroundColor = UIColor.blue
else
headerView.backgroundColor = UIColor.yellow
self.stttq.addArrangedSubview(headerView)
let headerView:UIView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))
headerView.backgroundColor = UIColor.black
self.stttq.insertArrangedSubview(headerView , at:0)
【讨论】:
谢谢,忘了堆栈视图。现在会调查它。 :) 创建嵌套 StackView 而不仅仅是func insertArrangedSubview(UIView, at: Int)
以在正确的位置插入元素是否有特殊原因?
不,但我更喜欢它,所以分配总是平等的以上是关于iOS:自动布局动态数量的项目的主要内容,如果未能解决你的问题,请参考以下文章