代码之家  ›  专栏  ›  技术社区  ›  Duck

iPhone-计算字体大小

  •  0
  • Duck  · 技术社区  · 14 年前

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

    假设我想这样做,我的代码将在未来所有设备的屏幕尺寸,包括ipad和其他后续产品(我相信会有更多的产品),最好的方法是什么?

    我可以按比例来做,我的意思是,如果缩放比例增加了x,就增加了字体x,但我担心的是设备的不同纵横比。

    iPhone的纵横比是1.5,但iPad的纵横比是1.33,其他纵横比可能会…我不确定这个简单的缩放方法是否足以在所有设备上产生字体一致性。

    有什么建议吗?

    谢谢你的帮助。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Claus Broch    14 年前

    您可以尝试使用此代码。它会自动缩放文本以适应一定的宽度(这里是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
  •  2
  •   Tom    14 年前

    简单设置 uiLabel.adjustsFontSizeToFitWidth = YES 将使文本缩小以适应文本字段。只要确保你的字体大小足够iPad开始使用,因为文本永远不会被缩放。 向上的 .

    当然,您还需要确保uilabel本身与其超级视图一起调整大小,或者uilabel及其内容都不会调整大小。您可以使用Interface Builder中的“大小”选项卡,或使用uilabel的 autoresizingMask 财产。