我有一个多行NSTextField
,我需要设置它的字体大小,以便当其内容很短时,它只显示在一个大字号的行上,但是
但当内容更长时,它会分成两行,并缩小其字体大小,以便内容保持其边界。根据内容长度修改NSTextField的字体大小
我查看了Get NSTextField contents to scale中提供的解决方案,但它不适用于多行字段。
我有一个多行NSTextField
,我需要设置它的字体大小,以便当其内容很短时,它只显示在一个大字号的行上,但是
但当内容更长时,它会分成两行,并缩小其字体大小,以便内容保持其边界。根据内容长度修改NSTextField的字体大小
我查看了Get NSTextField contents to scale中提供的解决方案,但它不适用于多行字段。
在NSTextField中没有原生的动态字体解决方案。你必须建立你自己的算法。
编辑:
它可能不是太困难。你可能只需要继承它,然后做做(在伪代码)的方法:
if(text.length > someValue)
self.fontSize = 17
else if (text.length < someValue)
self.fontSize = 14
else
self.fontSize = 12
让我们拭目以待,如果有人知道一个第三方的开源代码做这个优雅
。但问题保持不变,只有任何人都知道一个好的算法,我可以使用/能够修改来处理我的案例。 –
嗯,你可能能够找到Github上的东西,或等待别人在这里发布它。但我想这不会那么困难。请参阅我的文章中的编辑。 –
我用这个方法来更改多行标签的字体大小。基本上,如果字符串的长度太长,则会减小字体大小以使其适合标签区域内。希望这可以帮助。
if ([theText length] > 64) {
[label setFont:[NSFont systemFontOfSize:10]];
} else {
[label setFont:[NSFont systemFontOfSize:13]];
}
凡theText
是一个NSString和label
是我多行标签,我要显示给用户的文本。标签的尺寸是固定的尺寸。
感谢您的一个好主意,但我已经使用了一个循环,这增加了字体的大小,直到它不再适合 - 因为我需要它变得更加动态,没有固定值。 –
你也可以使用类似于这个例子的系统常量:'textField.font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];'我担心的 – JJD