擬合格式化字符串的大多數需求需要計算給定字符串的最大寬度的容器的高度。可可API中的這種功能反映了這一點。字符串容器大小,計算給定最大高度的最小寬度
NSTextField.sizeThatFits()
此方法將採用固定的最大寬度並調整高度以包含文本。
你會如何做與上述相反的 - 給定的高度限制,計算最小的寬度以包含文本?
我首先想到的一種方法是首先通過將單行文本的面積除以所需的高度以獲得估計的寬度來創建估計。但是這樣做總是高估了高度,因爲單詞會纏繞,並且會沿着另一個單詞推動其他單詞。算法的下一個階段將這個多餘的高度添加到虛構的矩形的末端,直到最大高度限制被打破,給出寬度的上限和下限估計值。算法的最後部分收斂於一種二進制搜索,直到達到某個像素容差。我會盡可能地發佈這個答案。
我覺得必須有更好的方法來做到這一點? (ObjC或Swift)
這是一個開始,但將是準確的,由於自動換行一定不再做一些線,我也查了一下高度單一長度的絃線不能準確地分成高度限制,因爲多條線條由於其間的間距而具有較高的高度。儘管謝謝你的回答! – 2015-02-11 09:18:56