我的UI中有一行,由固定大小的字符串(FS)、固定大小的映像和可变大小的字符串(VS)组成。我需要这一行在其superview中居中,如果它不再适用,可能会截断VS。就像启用截断的简单居中NSTextField一样。但是NSTextField不能持有NSImage AFAIK。
我认为NSStackView应该能够做到这一点。我已经设置它的中心在它的超级视图,并有一个NSTextField,NSImage和NSTextField在里面。但是当我将VS设置为非常长的东西时,FS和VS都被推出了superview的界限并被剪裁。
有没有一种方法可以告诉NSStackView永远不要将FS移出superview边界,而是截断VS?或者还有什么其他的技术来达到我的目标?
到目前为止,我已经尝试过:
我可以使用NSView并计算字符串的大小,并修改约束来完成这项工作。但我认为一定有更好的方法。
谢谢你的建议,
J.
发布于 2017-03-27 18:34:16
听起来好像您还没有将堆栈视图限制在它的容器中。除了中心化约束之外,您还需要将其前导设置为大于或等于superview的前导,将其尾部设置为小于或等于其superview的尾部。
FS和图像视图的压缩电阻应该高于VS的压缩电阻,甚至可以用来防止这两者被压缩。
堆栈视图的水平裁剪电阻应高于VS的压缩电阻。按要求留着就行了。你希望VS被压缩而不是被剪裁。
VS的压缩阻力实际上应该取决于视图层次结构和约束的其余部分。它大概应该小于490 (NSLayoutPriorityDragThatCannotResizeWindow),这样它就不会强迫窗口调整大小。
https://stackoverflow.com/questions/43051961
复制相似问题