我已經看過幾個Stackoverflow問題,其中人們遇到了boundingRectWithSize問題,但沒有一個是我的問題。boundingRectWithSize有時會返回高度約爲1的線太高
下面的代碼通常會計算高度爲1行的文本太高。
CGFloat height = [label.attributedText
boundingRectWithSize:CGSizeMake(label.width, CGFLOAT_MAX)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
context:nil].size.height;
例如,串地圖類型:USGS地形是我的視圖的大約一半的寬度和應爲1行高(〜18個像素),但最終具有一個2行高度( 〜36個像素):
我也嘗試計算使用的NSString而不是NSAttributedString高度,但同樣的事情發生:
CGFloat height = [[label.attributedText string]
boundingRectWithSize:CGSizeMake(label.width, CGFLOAT_MAX)
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
attributes:@{NSFontAttributeName:TITLE_FONT}
context:nil].size.height;
您可以在這張截圖的底部3個唱片公司結束了大小正確地看到,但不是前兩名。我在iPhone模擬器開啓顏色混合標籤,讓子視圖將着色來說明:
不確定是原因,但請注意,最上面的兩個字符串包含繪製在基線以下的字符(頂部字符串爲'p'和'y',下一個字符爲'('和')')而其他三個則沒有。 – ravron
@ravron是的,我已經注意到,實際上,但我試圖改變基線以下的字符,並有相同的結果。 –
問題是否會以標準字體持續存在?我對字體有問題,這些字體看起來並不明顯,這些字體看起來並不明顯。 – ravron