从 UIStackView 获取 View 的索引

Posted

技术标签:

【中文标题】从 UIStackView 获取 View 的索引【英文标题】:Get View's index from UIStackView 【发布时间】:2018-09-19 15:50:28 【问题描述】:

我在stackview 中添加了 2 个不同大小的视图。现在,当我单击任何视图的加号按钮时,我只想在其正下方添加一个视图。

我正在查看:

let index = superView.subviews.index(of: view)

然后我在做:

superView.insertArrangedSubview(newView, index + 1)

但实际上它是在不同位置添加新视图。

所以如果我尝试通过.subview.index 获取索引,那么它总是返回最后一个索引

【问题讨论】:

【参考方案1】:

arrangedSubviewssubviews 数组不必相同(因为堆栈视图可以有一个未“排列”的子视图)。即使它们具有相同的元素,它们也不必处于相同的顺序。

所以:

if let index = stackView.arrangedSubviews.firstIndex(of: view) 
    stackView.insertArrangedSubview(newView, at: index + 1)

【讨论】:

firstIndex(of:) 适用于 xcode 10 ,试试你的 index(of

以上是关于从 UIStackView 获取 View 的索引的主要内容,如果未能解决你的问题,请参考以下文章

Swift 将 GestureRecognizer 添加到 UIStackView 之上的 View

删除 UIStackView 中的自定义间距

以编程方式在 UIStackView 中添加视图

UIStackView 可访问性 - 在默认的可访问元素中插入可访问性视图?

居中 UIStackView 不居中视图

UIstackview如何确保两个子视图具有不同的比例大小