我有一个水平堆栈视图,我添加了子视图(7个单元格).堆栈中的每个单元格都具有超出视图边界的圆形徽章(负面约束).运行时,如下所示,每个单元格位于上一个单元格徽章的顶部.我想更改顺序,以便徽章完全可见.
尝试使用Z索引,但它没有帮助,因为您可以在以下视图层次结构中看到图层以某种方式不平坦:
有任何想法或建议如何做到这一点?
谢谢.
yos*_*ile 12
UIStackView类的文档告诉我:
子视图数组的顺序定义了子视图的Z顺序.如果视图重叠,则具有较低索引的子视图将显示在具有较高索引的子视图后面.
这正是我在问题中所经历的.为了解决我的具体情况,我做了将视图的语义更改为RTL的技巧,如下所示:
这不是涵盖一般情况,因为设备可能已在其全局设置中设置了RTL语言.对于通用情况,我想我需要检查接口语义并强制与我的堆栈视图相反的方向.
PS这是一种破解,所以任何关于如何以不同的方式重新排序子视图的Z顺序的想法将是最受欢迎的!
此Swift解决方案使用UIView方法sendSubviewToBack(_:)(此处为docs)反转堆栈视图子视图顺序:
@IBOutlet weak var stackView: UIStackView!
for view in stackView.arrangedSubviews {
stackView.sendSubviewToBack(view)
}
Run Code Online (Sandbox Code Playgroud)
当我们通过堆栈视图的排列视图(从下到上)前进时,后面的(即更高的)视图被推到底部,从而颠倒顺序:-)
| 归档时间: |
|
| 查看次数: |
10530 次 |
| 最近记录: |