2011-06-29 81 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

感謝您的一個好主意,但我已經使用了一個循環,這增加了字體的大小,直到它不再適合 - 因爲我需要它變得更加動態,沒有固定值。 –

相關問題