我试图将两个 NSTextFields 的简单案例放在一起,它们之间具有动态宽度和固定间距。我想不出一个有效的方法来做到这一点。
我正在寻找这样的东西:
蓝色框是 NSTextFields。当更多文本输入到一个文本中时,它应该会增长,从而使另一个文本缩小,从而保持前导空间、尾随空间和字段之间的间距。如果两个字段的文本过多,则应优先考虑第一个字段。每个字段也将清楚地具有它可以达到的最大和最小可能宽度。
我将如何解决这个问题,最好尽可能使用 IB 自动布局?
我试图将两个 NSTextFields 的简单案例放在一起,它们之间具有动态宽度和固定间距。我想不出一个有效的方法来做到这一点。
我正在寻找这样的东西:
蓝色框是 NSTextFields。当更多文本输入到一个文本中时,它应该会增长,从而使另一个文本缩小,从而保持前导空间、尾随空间和字段之间的间距。如果两个字段的文本过多,则应优先考虑第一个字段。每个字段也将清楚地具有它可以达到的最大和最小可能宽度。
我将如何解决这个问题,最好尽可能使用 IB 自动布局?
在我看来,您提到的所有约束都直接转化为界面构建器-
关键在于在intrinsicContentSize
输入文本时使文本字段无效。
您可以在此处查看示例项目,以帮助您走上正轨。
在根据 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;