如何在堆栈视图的顶部到底部添加子视图?

时间:2019-09-19 05:02:06

标签: swift stackview

我正在将标签添加到堆栈视图中,但无法将它们添加到堆栈视图的顶部而不是中间。

enter image description here

我正在尝试通过以下代码来实现:

let textLabel = UILabel()
    textLabel.textColor = .white
    textLabel.widthAnchor.constraint(equalToConstant: self.stkCombatStackView.frame.width).isActive = true
    textLabel.text  = "This is a test"
    textLabel.textAlignment = .left
    stackview.addArrangedSubview(textLabel)

我希望标签从上到下添加,该怎么做?没有怪异的间距?

我将检查器中的间距设置为1

(我也有将stackview嵌套在情节提要中的滚动视图中,但似乎根本无法滚动stackview)

1 个答案:

答案 0 :(得分:1)

  

我正在将标签添加到堆栈视图中,但无法将它们添加到堆栈视图的顶部而不是中间。

您可能应该呼叫insertArrangedSubview(_: at:)而不是addArrangedSubview()。通过insert...方法,您可以指定要在其中插入新视图的索引。

  

我希望标签从上到下添加,该怎么做?没有怪异的间距?

确定要使用正确的工具进行作业吗?堆栈视图非常适合在固定空间中包含异构视图列表,并且它可以移动和/或调整列表中的视图大小以均匀填充视图。看一下Distribution值:您可以通过几种不同的方式调整内容的大小来填充堆栈视图,也可以将内容均匀地分布在堆栈视图的高度(或宽度)上。只能列出所包含的视图并在底部留出多余的空间,这似乎是您想要的。

您可以考虑的一些选择:

  • 使用UICollectionView:集合视图非常灵活,可让您以任何可能的几何图形排列项目列表;所提供的布局管理器一定可以满足您的需求,但是如果您不喜欢它,则可以编写自己的布局管理器或使用其他人的布局管理器。 UICollectionView是UIScrollView的子类,因此滚动很容易。

  • 使用UITableView:表格视图为您提供了一个垂直列表,该列表包含(通常但不一定类似)单元格,这些单元格可以包含您想要的任何内容,以及从上到下的行为您要查找的是表工作方式中固有的。 UITableView也是UIScrollView的子类。

  • 自己滚动:创建一个仅包含其他视图列表并根据您喜欢的算法进行布局的视图并不难;如果表或集合不能满足您的需求(这似乎不太可能),那么编写自己的容器比尝试强制UIStackView提交要好。

相关问题