使用CGSize Points或Pixels确定UIFont大小

时间:2016-04-14 08:32:57

标签: objective-c swift uiview uifont cgrect

我可以使用精确定义的PointSize制作CGRect,例如(20x20),这样我就可以准确计算屏幕上的实际大小(cm或英寸)。

[calculated_field]

我想以某种方式确定UIFont(总是只有一个Charackter“A..Z”或“1..9”)的大小,这样我至少可以计算出它的实际高度屏幕。

是否可以计算从CGSize到UIfont大小的字体大小,以便它在屏幕上真正匹配?

1 个答案:

答案 0 :(得分:0)

我找到了解决这类问题的方法。
如果你想让UIFont适合CGRect或Label,它在大多数情况下都不适合CGRect。原因是字体特定的填充。 如果你想要一个字体适合CGRect,你必须知道使用较低或大写字母,然后设置font.xHeigth或font.capHeight为font.pointSize。因此,您将获得更大的font.pointsize 这个小CodeSnippet解决了我的问题:

+(CGFloat) fitFontSize:(UIFont*) font{
    CGFloat fontSize = font.pointSize;
    bool fontSizeAdjusted = false;

    while (!fontSizeAdjusted) {
        CGFloat xHeight = font.xHeight;
        if( fontSize-xHeight > 0.1 ){
            font = [font fontWithSize:font.pointSize+1];
        }else{
            fontSizeAdjusted = true;
            fontSize = font.pointSize;
        }
    }
    return fontSize;
}

本文帮助我了解有关UIFonts

的更多信息