繁体   English   中英

iPhone-计算字体大小

[英]iphone - calculating the font size

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

假设我希望这样做的方式可以使我的代码在所有未来设备的屏幕尺寸(包括iPad和随后的其他设备,我相信还会有更多)上都可以正常工作,那么最好的方法是什么?

我可以按比例进行此操作,我的意思是,如果比例增加X,则字体X也增加,但是我担心的是设备的纵横比不同。

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

有什么建议么?

谢谢你的帮助。

只需设置uiLabel.adjustsFontSizeToFitWidth = YES就会使您的文本缩小以适合文本字段。 只要确保你的字体大小是足够大,为iPad开始说起,因为文本将永远不会被放大

当然,您还需要确保UILabel本身及其父视图的大小已调整,或者UILabel或其内容都不会缩放。 您可以使用Interface Builder中的Size选项卡,或以编程方式使用UILabel的autoresizingMask属性来执行此操作。

您可以尝试使用此代码。 它将自动将文本缩小以适合特定宽度(此处为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];

克劳斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM