我正在尝试将两个NSTextFields的简单情况放在一起,其中动态宽度和固定间距介于两者之间。虽然我无法找到一种有效的方法。
我希望得到这样的东西:
蓝色框是NSTextFields。当更多文本输入一个文本时,它应该增长,从而使另一个文本缩小,保持领先空间,尾随空格和字段之间的间距。如果两个字段都有太多文本,则第一个应该优先考虑。每个字段也明显具有可达到的最大和最小可能宽度。
我如何处理这个问题,最好尽可能多地利用IB自动布局?
答案 0 :(得分:1)
在我看来,您提到的所有约束都直接转换为界面构建器 -
答案 1 :(得分:0)
根据ilya的回答应用约束后,我必须添加到视图控制器的代码:
在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;
答案 2 :(得分:0)
关键在于在输入文本时使文本字段的intrinsicContentSize
无效。
您可以查看示例项目here,以便让您走上正确的轨道。