iphone - 计算字体大小

时间:2010-03-15 21:11:16

标签: iphone cocoa-touch iphone-sdk-3.0 uikit

我必须显示字体大小= 14的标签 当视图为480x320时。

假设我想以这样的方式执行此操作,即我的代码将适用于所有未来设备的屏幕尺寸,包括iPad和其他人(我相信会有更多),最好的方法是什么?

我可以按比例做到这一点,我的意思是,如果比例增加X,增加字体X,但我担心的是设备的不同宽高比。

iPhone的宽高比为1.5,但iPad为1.33,其他宽高比可能会出现......我不确定这种简单的缩放方法是否足以在所有设备上产生字体一致性。

有什么建议吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

只需设置uiLabel.adjustsFontSizeToFitWidth = YES即可缩小文字以适应文字字段。只需确保您的字体大小足以让iPad开始,因为文本永远不会缩放 up

当然,您还需要确保UILabel本身与其superview一起调整大小,否则UILabel及其内容都不会被缩放。您可以使用Interface Builder中的“大小”选项卡执行此操作,也可以使用UILabel的autoresizingMask属性以编程方式执行此操作。

答案 1 :(得分: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];

克劳斯