使用 CGSize Points 或 Pixels 确定 UIFont 大小
Determine UIFont size with CGSize Points or Pixels
我可以制作一个具有精确定义的 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 的大小(总是只有一个 Charackter "A..Z" 或“1..9”),这样我至少可以计算出实际高度屏幕。
是否可以计算从 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
我可以制作一个具有精确定义的 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 的大小(总是只有一个 Charackter "A..Z" 或“1..9”),这样我至少可以计算出实际高度屏幕。
是否可以计算从 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