gpt4 book ai didi

cocoa - 如何让 NSStackView 截断最右边的 NSTextField

转载 作者:行者123 更新时间:2023-12-03 16:35:06 25 4
gpt4 key购买 nike

我的 UI 中有一行,由固定大小的字符串 (FS)、固定大小的图像和可变大小的字符串 (VS) 组成。我需要这条线在它的 super View 中居中,如果它不再适合,可能会截断 VS。就像启用截断的简单居中 NSTextField 一样。但 NSTextField 不能容纳 NSImage AFAIK。

我想 NSStackView 应该能够做到这一点。我已将其设置为在其 super View 中居中,并且内部有 NSTextField、NSImage 和 NSTextField。但是当我将 VS 设置为很长的值时,FS 和 VS 都会被推出 super View 边界并被剪裁。

有没有办法告诉 NSStackView 永远不要将 FS 移出 super View 边界,而是截断 VS?或者还有其他技术可以实现我的目标吗?

到目前为止我已经尝试过:

  1. 在 VS 上使用 NSStackView 并将 compressionResistance 设置为 499 - 没有效果
  2. 使用 NSTextView - 无法截断文本并适合单行。也似乎有点矫枉过正

  3. 使用 NSView - 它需要我设置 x 位置,所以它不正确居中。

我可以使用 NSView 计算字符串的大小并修改约束以使其工作。但我认为一定有更好的方法。

感谢您的任何想法,

J.

最佳答案

听起来您没有限制堆栈 View 以适应其容器。除了居中约束之外,您还需要将其前导设置为大于或等于 super View 的前导,并将其尾随设置为小于或等于其 super View 的尾随。

FS 和 ImageView 的压缩阻力应该高于 VS 的压缩阻力,甚至可能需要防止这两者被压缩。

堆栈 View 的水平裁剪阻力应高于VS的压缩阻力。保留它为 required 就可以了。您希望 VS 被压缩而不是被剪辑。

VS 的压缩阻力实际上应该取决于 View 层次结构的其余部分和约束。它应该小于 490 (NSLayoutPriorityDragThatCannotResizeWindow),因此它不会强制窗口调整大小。

关于cocoa - 如何让 NSStackView 截断最右边的 NSTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com