2014-10-06 65 views
1

我一直在使用sizeWithAttributes以獲得widthheight以便繪製一個NSAttributedString。這是很好的width,因爲返回寬度的值非常適合字符 - 它從第一個字符到最後一個字符計算,沒有添加任何額外的填充。但是對於height,它返回的值比我想要的大。這是因爲它必須從最高字母的頂部開始計算height並向下延伸到最低字符的底部 - 例如g字符延伸到基線以下。在其邊界框內獲取字符串基線位置

我不相信這個API是'智能'的,因爲我的字符串中沒有任何字符延伸到基線以下,但返回的高度太高。它似乎正在考慮可能與這些屬性一起顯示的任何可能的字符。

我需要一種方法來減去字符串下方「額外填充」的數量。我想計算基線相對於height的位置,或者計算多少空間專用於基線下面的區域。下面的插圖可以直觀地解釋我認爲會發生什麼,儘管填充量有點極端。

------------- 

--greetings-- 
       <-get rid of this 'extra' padding 
------------- 

我相信boundingRectWithSize:options:context:會給我相同的尺寸,我不知道有任何其他(非推薦)API計算字符串尺寸。

回答

1

UIFont具有屬性ascender(高於基線的高度)和descender(負值,高度低於基線的高度)。這可能是你正在尋找的。