gpt4 book ai didi

macos - 当用户调整窗口大小时垂直调整 NSTextField 大小

转载 作者:行者123 更新时间:2023-12-03 16:20:21 24 4
gpt4 key购买 nike

我在窗口 View 中有一个 NSTextField。

我已经尝试了所有 IB 选项,但我似乎无法实现以下目标:

NSTextField 中有一个相当长的句子 - 当窗口大小调整为较窄的宽度时,NSTextField 也会变窄 - 它将文本推到下一行。然而,任何被推到 NSTextField 底部以下的文本都会被截断。我希望 NSTextField 垂直扩展其大小以容纳更高的文本。

这可以自动完成还是我应该观察窗口大小调整事件并重新计算 NSTextField 的高度?

我需要支持 10.7 和 10.8,并且我尝试过使用自动布局和自动调整大小,但没有成功。

编辑 - 这是基于 Jerry 的答案(以及他来自 Github 的类别)的代码:

-(void)setFrame:(NSRect)frameRect{

NSRect myFrame = CGRectMake(frameRect.origin.x, frameRect.origin.y, frameRect.size.width, [self.stringValue heightForWidth:frameRect.size.width attributes:nil]);
[super setFrame: myFrame];
}

最佳答案

自动布局在更高的级别上运行。我认为您需要调整文本字段的大小。

您可以尝试将 -sizeToFit 发送到文本字段,但这可能会水平扩展而不是垂直扩展。因此,如果这不起作用,请查看我的 NS(Attributed)String+Geometrics category 中的 -heightForWidth::方法。使用此方法,您可以子类化 NSTextField 并覆盖 -sizeToFit 以垂直扩展。将调整大小合并到 setFrame: 和 setStringValue: 中可能会很酷,这样它就始终保持适当的高度。

自动布局应该从那里接管,根据需要移动同级 subview 并调整其大小。

关于macos - 当用户调整窗口大小时垂直调整 NSTextField 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14843179/

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