有沒有辦法來橢圓化NSTextField的文本內容,而不是截斷?橢圓NSTextField?
所以不是:
The quick brown fox jumped over
它會說:
The quick brown fox jumped ...
我找不到這個文檔中任何事情。我錯過了什麼?
更新: 有沒有什麼辦法可以用ellipsize和wordwrap - 換句話說,有多行並且最後一個省略號?
有沒有辦法來橢圓化NSTextField的文本內容,而不是截斷?橢圓NSTextField?
所以不是:
The quick brown fox jumped over
它會說:
The quick brown fox jumped ...
我找不到這個文檔中任何事情。我錯過了什麼?
更新: 有沒有什麼辦法可以用ellipsize和wordwrap - 換句話說,有多行並且最後一個省略號?
所以這是一個很好的問題!即使它暴露在IB中,它也不是視圖或子視圖上的屬性。相反,它被埋在NSTextField使用的單元格中。因此,如果您向該單元格請求該對象,則可以讀取或設置值:lineBreakMode。
查看NSCell的所有選項的類描述 - truncateCenter是一個(用於獲取中心省略號)。
編輯:更新後的問題提示以下想法。就個人而言,我認爲試圖獲得谷歌代碼是有點矯枉過正,也許你可以通過創建一個小自定義的textField來做一些不那麼複雜的事情。
創建一個客戶的NSView對象,並給它一個字符串,字體屬性以及與下面的一些行動的方法,甚至width屬性
基本思想是利用可可的NSString類它可以讓你從一個字符串/字體組合中確定字符串的長度(也可能是它的高度)(我在UIKit中使用它,在Cocoa中使用過等效,但它已經有一段時間了......)
其中之一視圖的方法將是'計算'。當你得到這個時,使用單個空格作爲分隔符將字符串轉換爲一個單詞數組(或使其更復雜)。然後,開始計算繪製的字符串的長度,首先進行工作,追加空格和第二個等,直到發現超出了他的寬度。這是你的第一行字符串。
繼續執行此操作以獲取要繪製的行數(2?3?)。計算一下unicode字符串的長度 - 我記得它的選項分號 - 然後保持這個長度。
在最後一行中,不斷添加單詞,直到超過長度,然後一次備份一個單詞,驗證最後附加的字符串字符串(減去尾隨空格)但使用'...' char將會適合這個空間。
您可以通過周圍的邊框等
添加填充,一旦計算完成使這個票友(你當然緩存中沒有答案的所有位),當它到達'你的看法準備的drawRect:......「。您在位置(0,bounds.size.height - 21),並繪製第一線段,然後向下移動21點,畫第二行等
如果我編寫這個我會計劃2-4小時 - 這不是微不足道的,也許這個邏輯有點複雜,但它很簡單。祝你好運!
雖然正確答案並沒有在這個老問題接受 - 滾動到最後一個答案 - 它包括代碼Truncate the last line of multi-line NSTextField
該解決方案包括使用橢圓和換行的總和。
我以爲選擇截斷或'NSLineBreakByTruncatingTail'自動執行橢圓 - – Vervious 2012-08-03 23:20:36
乍得,如果你給了我賞金謝謝,現在我感覺不好,因爲我沒有真正回答你的問題。有人對我進行了恐嚇(低估了答案),非常有趣,我只是回顧了這個問題和你的更新。我確實有一個建議,現在就編輯我的答案。 – 2012-09-21 15:07:08
沒問題,@DavidH!你回答了最初提出的問題 - 我忽略了包含使問題變得困難的「ellipsize和wordwrap」部分。歡迎您來到賞金 - 感謝您加入的想法! – 2012-09-21 16:26:38