2010-03-15 116 views
0

當視圖爲480x320時,我必須顯示字體大小= 14的標籤 。iphone - 計算字體大小

假設我想以我的代碼能夠很好地適用於所有未來設備的屏幕尺寸,包括iPad和其他以下設備(我相信會有更多的屏幕會出現),這樣做的最佳方式是什麼? ?

我可以按比例做到這一點,我的意思是,如果比例增加X,增加字體X,但我擔心的是設備的不同縱橫比。

iPhone的縱橫比爲1.5,但iPad的爲1.33,其他縱橫比可以來......我不確定這種簡單的縮放方法是否足以在所有設備上產生字體一致性。

有什麼建議嗎?

感謝您的任何幫助。

+0

可可沒有雙c。 http://developer.apple.com/technologies/mac/cocoa.html – 2010-03-15 21:15:15

回答

1

您可以嘗試使用此代碼。它會自動縮放文本以適應特定寬度(這裏是contentRect)。只要指定的最小和最大可接受字型大小:

#define MAX_FONT_SIZE 
#define MIN_FONT_SIZE 
#define LEFT_TEXT_OFFSET 
#define TEXT_TOP 

UIFont *theFont = [UIFont systemFontOfSize: MAX_FONT_SIZE]; 
CGRect contentRect = self.bounds; 
CGFloat boundsX = contentRect.origin.x; 
CGPoint point; 
CGSize width = contentRect.size.width; 

point = CGPointMake(boundsX + LEFT_TEXT_OFFSET, TEXT_TOP); 
[theText drawAtPoint:point forWidth:width withFont:theFont 
     minFontSize:MIN_FONT_SIZE actualFontSize:NULL 
     lineBreakMode:UILineBreakModeTailTruncate 
     baselineAdjustment:UIBaselineAdjustmentAlignBaselines]; 

克勞斯

2

簡單的設置uiLabel.adjustsFontSizeToFitWidth = YES會導致文字縮小以適合文本字段。只要確保您的字體大小足以讓iPad開始使用,因爲文字永遠不會縮放到以上

當然,您還需要確保UILabel本身隨其超級視圖一起調整大小,否則UILabel或其內容都不會縮放。您可以使用Interface Builder中的Size選項卡或編程方式使用UILabel的autoresizingMask屬性。