我可以使用精确定义的PointSize制作CGRect,例如(20x20),这样我就可以准确计算屏幕上的实际大小(cm或英寸)。
[calculated_field]
我想以某种方式确定UIFont(总是只有一个Charackter“A..Z”或“1..9”)的大小,这样我至少可以计算出它的实际高度屏幕。
是否可以计算从CGSize到UIfont大小的字体大小,以便它在屏幕上真正匹配?
答案 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
的更多信息