2010-03-15 101 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属性。