我有NSTextField定义了左,右和上限制(没有底部约束集)。如果内容不适合,我需要NSTextField增长,如果剩余未使用的空间,我需要减小大小。
现在我有:如果NSTextField有多行文本或内容太多,它会自动扩展,但NSTextField也不会在窗口大小调整时减少自己的大小。
我没有找到任何用Swift编写的简单解决方案来解决这个问题(我有很多这样的带有约束的标签),在iOS上,一切都在使用通常的文本标签和约束。
我为这个问题创建了一个简单的项目,你可以看到问题:[Download Text.zip]
我找到但未使用的解决方案:
根据Mac OS X Release Notes(NSTextField intrinsicContentSize改进部分),当NSTextField的高度发生变化时,已知错误,但宽度保持不变。我们有两种方法来修复它:
maximumNumberOfLines
指定为有意义的值。这对我们来说不是好方法,因为我们不知道实际的行数并且不想计算它。preferredMaxLayoutWidth
设置为实际值。我结束了这样的代码:码:
override func viewDidLayout() {
super.viewDidLayout()
textField.preferredMaxLayoutWidth = textField.frame.width
}