2

我试图将两个 NSTextFields 的简单案例放在一起,它们之间具有动态宽度和固定间距。我想不出一个有效的方法来做到这一点。

我正在寻找这样的东西:

目标

蓝色框是 NSTextFields。当更多文本输入到一个文本中时,它应该会增长,从而使另一个文本缩小,从而保持前导空间、尾随空间和字段之间的间距。如果两个字段的文本过多,则应优先考虑第一个字段。每个字段也将清楚地具有它可以达到的最大和最小可能宽度。

例子

我将如何解决这个问题,最好尽可能使用 IB 自动布局?

4

3 回答 3

1

在我看来,您提到的所有约束都直接转化为界面构建器-

  1. 第一个视图有宽度 >= 的东西。
  2. 第一个视图有宽度 <= 的东西
  3. 与第二视图相同。
  4. 视图之间的空间是固定的。
  5. 第二个视图希望尽可能小(宽度为 0),但它的优先级低于先前的约束,并且优先级低于内部内容大小约束。
于 2013-09-27T00:18:29.567 回答
0

关键在于在intrinsicContentSize输入文本时使文本字段无效。

您可以在此处查看示例项目,以帮助您走上正轨。

于 2015-03-11T22:42:55.093 回答
0

在根据 ilya 的回答应用约束后,我必须添加到视图控制器的代码:

in controlTextDidChange(_controlWidthConstraint指输入的固定宽度约束;第二个输入默认可能为 0 ):

// Get the new width that fits
float oldWidth = textControl.frame.size.width;
[input sizeToFit];
float controlWidth = textControl.frame.size.width;

// Don’t let the sizeToFit method modify the frame though
NSRect controlRect = textControl.frame;
controlRect.size.width = oldWidth;
textControl.frame = controlRect;

_controlWidthConstraint.constant = controlWidth;
于 2013-10-02T00:18:51.130 回答