我一直在使用sizeWithAttributes
以獲得width
和height
以便繪製一個NSAttributedString
。這是很好的width
,因爲返回寬度的值非常適合字符 - 它從第一個字符到最後一個字符計算,沒有添加任何額外的填充。但是對於height
,它返回的值比我想要的大。這是因爲它必須從最高字母的頂部開始計算height
並向下延伸到最低字符的底部 - 例如g字符延伸到基線以下。在其邊界框內獲取字符串基線位置
我不相信這個API是'智能'的,因爲我的字符串中沒有任何字符延伸到基線以下,但返回的高度太高。它似乎正在考慮可能與這些屬性一起顯示的任何可能的字符。
我需要一種方法來減去字符串下方「額外填充」的數量。我想計算基線相對於height
的位置,或者計算多少空間專用於基線下面的區域。下面的插圖可以直觀地解釋我認爲會發生什麼,儘管填充量有點極端。
-------------
--greetings--
<-get rid of this 'extra' padding
-------------
我相信boundingRectWithSize:options:context:
會給我相同的尺寸,我不知道有任何其他(非推薦)API計算字符串尺寸。