我想采用标准的 UILabel 并增加字体大小以填充垂直空间。从这个问题的公认答案中汲取灵感,我在 UILabel 上使用这个 drawRect 实现定义了一个子类:
- (void)drawRect:(CGRect)rect
{
// Size required to render string
CGSize size = [self.text sizeWithFont:self.font];
// For current font point size, calculate points per pixel
float pointsPerPixel = size.height / self.font.pointSize;
// Scale up point size for the height of the label
float desiredPointSize = rect.size.height * pointsPerPixel;
// Create and assign new UIFont with desired point Size
UIFont *newFont = [UIFont fontWithName:self.font.fontName size:desiredPointSize];
self.font = newFont;
// Call super
[super drawRect:rect];
}
但这不起作用,因为它会将字体缩放到标签底部之外。如果你想复制它,我从标签 289x122 (wxh) 开始,字体为 Helvetica,起始点大小为 60,适合标签。这是使用字符串“{Hg”的标准 UILabel 和我的子类的示例输出:
我已经查看了字体下降和上升,尝试缩放以不同的组合考虑这些,但仍然没有任何运气。任何想法,这与具有不同下降和上升长度的不同字体有关吗?