我可以制作一个具有精确定义的 PointSize 的 CGRect,例如 (20x20),这样我就可以准确计算屏幕上的实际尺寸(厘米或英寸)。
-(void) drawRect:(CGRect)rect{
[super drawRect:rect];
CGRect rectangle = CGRectMake(0, 0, 20, 20);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rectangle);
}
我想以某种类似的方式确定 UIFont 的大小(总是只有一个字符“A..Z”或“1..9”),这样我至少可以计算出 UIFont 的实际高度屏幕。
是否可以计算从 CGSize 到 UIfont Size 的字体大小,以便它在屏幕上真正匹配?
最佳答案
我已经找到了解决此类问题的方法。
如果你想让 UIFont 适合 CGRect 或标签,在大多数情况下它不会适合 CGRect。原因是字体特定的填充。
如果您希望字体适合 CGRect,您必须知道使用小写字母还是大写字母,然后将 font.xHeigth 或 font.capHeight 设置为 font.pointSize。因此你会得到更大的 font.pointsize。
这个小代码片段解决了我的问题:
+(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 的信息
关于objective-c - 使用 CGSize Points 或 Pixels 确定 UIFont 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617693/