我无法弄清堆栈视图的排列视图。
我们说我有一个堆栈视图,里面有三个按钮。在将这些按钮添加到堆栈视图的已排列子视图之前,是否必须将这些按钮添加为subviews
的{{1}}?
答案 0 :(得分:1)
UIStackView
reference回答了这个问题。我将重点放在以下摘录的重点部分:
维护已安排的视图和子视图之间的一致性
堆栈视图确保其
arrangedSubviews
属性始终是其subviews
属性的子集。具体来说,堆栈视图强制执行以下规则:
- 当堆栈视图向其
arrangedSubviews
数组添加视图时,它还会将该视图添加为子视图(如果尚未添加)。- 从堆栈视图中删除子视图时,堆栈视图也会将其从
arrangedSubviews
数组中删除。- 从
arrangedSubviews
数组中删除视图不会将其作为子视图删除。堆栈视图不再管理视图的大小和位置,但视图仍然是视图层次结构的一部分,如果可见,则在屏幕上呈现。虽然
arrangedSubviews
数组始终包含subviews
数组的子集,但这些数组的顺序保持独立。
arrangedSubviews
数组的顺序定义了视图在堆栈中的显示顺序。对于水平堆栈,视图按阅读顺序排列,较低的索引视图出现在较高的索引视图之前。例如,在英语中,视图按从左到右的顺序排列。对于垂直堆栈,视图从上到下排列,较低的索引视图位于较高的索引视图之上。subviews
数组的顺序定义了子视图的Z顺序。如果视图重叠,则索引较低的子视图将显示在索引较高的子视图后面。