在回顾了苹果(Apple)大多数(缺乏)有关NSStackView的文档之后,再加上更强大的互联网的智慧之言,包括Stackoverflow的集体智慧,一个问题依然存在。
我以编程方式将任何NSView添加到我的(IB实例化) NSStackView中,将自己可视化地定位到各自重力区域的底部。因此,它们相互重叠,行为不像预期的具有适当间距的视图“堆栈”。
每个重力区域似乎都被压缩了,无法容纳更多的视图。我越多地将NSStackView.addView应用到重力区域,现有的视图就越苗条。
我希望NSStackView能够自然地进行扩展,以适应嵌入式视图的.size。
任何明智的建议都很感激..。
--更多的细节-
我使用接口生成器将StackView放置到主窗口中。然后,我可以将其他视图添加到接口生成器中的堆栈区域,例如按钮。这些堆栈和布局在IB中和运行时都是预期的。
但是,当我以编程方式将任何视图添加或插入到任何重力区域时,其底部边缘将垂直定位到StackView的底部边缘。对于垂直或水平堆栈,这种布局行为是相同的。
因此,如果我以编程方式添加多个视图,则它们的大小为OK,显示但重叠。我使用'NSBox‘对象作为视图(目前),它们的大小使用'.sizeToFit()’。我看到他们的“.bounds.height”和“宽度”不是零。
我不知道如何设置或记录内部内容大小。这可能是下一个尝试。
-no运气-
因此,我现在已经严格地研究了所有的排列:压缩,拥抱,(非零)内在大小,约束,没有约束和各种类型的NSViews,但是.如果我‘.addView(.)’或“.insertView(.)”不止一次,在任何“NSStackView”重力区域,后续视图覆盖了前面的视图,并将自己放置在特定的基线上。这是我办公室最接近楼层的边缘,不管堆栈方向如何。
任何“NSStackView”和AutoLayout的帮助,无论是情感上的还是技术上的,都是非常感谢的。
发布于 2015-06-27 18:27:33
因此,NSStackView的所有问题似乎都来自于它的约束。必须以正确的形式从子视图中提供约束。最简单的方法是在堆栈视图的每个子视图中放置一个具有坚实约束的对象/视图。
在Interface中,当我将一个具有大小、宽度和前导约束的简单NSImageView放置在将成为Stackview的子视图的NSView中时,堆栈将正确显示。
但是,如果我的NSStackView中只有空的NSStackView,即使是样式化和赋值的框架,NSView也不会出现,或者所有的视图都会根据基线堆叠。
此NSView将不显示在NSStackView中:

此NSView将显示在NSStackView中:

https://stackoverflow.com/questions/29322420
复制相似问题