2011-06-29 136 views
2

我有一个多行NSTextField,我需要设置它的字体大小,以便当其内容很短时,它只显示在一个大字号的行上,但是
但当内容更长时,它会分成两行,并缩小其字体大小,以便内容保持其边界。根据内容长度修改NSTextField的字体大小

我查看了Get NSTextField contents to scale中提供的解决方案,但它不适用于多行字段。

+0

你也可以使用类似于这个例子的系统常量:'textField.font = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];'我担心的 – JJD

回答

1

在NSTextField中没有原生的动态字体解决方案。你必须建立你自己的算法。

编辑:

它可能不是太困难。你可能只需要继承它,然后做做(在伪代码)的方法:

if(text.length > someValue) 
    self.fontSize = 17 
else if (text.length < someValue) 
    self.fontSize = 14 
else 
    self.fontSize = 12 

让我们拭目以待,如果有人知道一个第三方的开源代码做这个优雅

+0

。但问题保持不变,只有任何人都知道一个好的算法,我可以使用/能够修改来处理我的案例。 –

+0

嗯,你可能能够找到Github上的东西,或等待别人在这里发布它。但我想这不会那么困难。请参阅我的文章中的编辑。 –

4

我用这个方法来更改多行标签的字体大小。基本上,如果字符串的长度太长,则会减小字体大小以使其适合标签区域内。希望这可以帮助。

if ([theText length] > 64) { 
     [label setFont:[NSFont systemFontOfSize:10]]; 
    } else { 
     [label setFont:[NSFont systemFontOfSize:13]]; 
    } 

theText是一个NSString和label是我多行标签,我要显示给用户的文本。标签的尺寸是固定的尺寸。

+0

感谢您的一个好主意,但我已经使用了一个循环,这增加了字体的大小,直到它不再适合 - 因为我需要它变得更加动态,没有固定值。 –

相关问题