我试图在我的 drawRect:(CGRect) 方法中将字符串定位在 CGRect 的垂直中心。
CGRect 有这个大小:
CGRect rect = CGRectMake(0.0f, 0.0f, rectWidth, rectHeight);
为了绘制字符串使其居中,我首先尝试了这个:
CGFloat diffHeightRectAndFont = rectHeight - font.capHeight;
[str drawAtPoint:CGPointMake(0.0f, diffHeightRectAndFont * 0.5f) withFont:font];
我首先假设会找到我的矩形和字体之间的高度差异,然后将字体偏移这个高度的一半应该在“最佳位置”中给出一个位置。
但是,capHeight 以点为单位,rectHeight 以像素为单位,因此这种解决方案适用于大小范围为 12-15 的字体。之后,差异开始将字符串定位在矩形之外。
我重复了几次,结果证明正确定位字符串的唯一方法是这种“hack”,它是有效的,但不会对代码的可读性产生奇迹:
CGFloat diffHeightRectAndFont = rectHeight - [[NSString stringWithString:@"F"] sizeWithFont:font].height;
有没有更直接的方法来获取使用特定字体的大写字母的像素高度?
先感谢您:)