我注意到,在一些字体,如果对它们的帧大小由NSAttributedString.size或boundingRectWithSize确定一些符号显示不正确的的UILabel的一些字体。例如,我选择字体AvenirNext-粗体,符号“A”,并设置的pointsize到300计算帧(宽度= 218.69999999999999,高度= 409.80000000000001)。我把这个角色放在上述尺寸的框架中。时候切断的UILabel符号因为在字体符号参数
正如你可以在图片中看到,切断了显示标签的部分突出显示为红色框。我检查了其他几种字体,并注意到它始终在发生。我可以摆脱这一点,而不必更改UILabel的框架并更正字体中符号的边距。使用第三方程序,我发现,对于字体AvenirNext粗体,字符“A”,左,右页边距等于-1.39。
是否有人知道的任何技术来解决这个问题?
附加:
如果你对你的MAC OS开放字体的应用程序,并找到艾文莉接下来加粗字体,你可以看到这个切断。
代码:
NSString *text = @"A";
NSString *fontName = @"AvenirNext-Bold";
CGFloat pointSize = 300.f;
UIFont *font = [UIFont fontWithName:fontName size:pointSize];
CGSize size = [text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil].size;
self.label.text = text;
self.label.font = font;
self.label.frame = CGRectMake((self.view.bounds.size.width - size.width)/2.f, (self.view.bounds.size.height - size.height)/2.f, size.width, size.height);
其他字体: 您可以更改字体BodoniSvtyTwoITCTT-BookIta。
你试过“label.clipToBounds =假' –
大卫威廉姆斯,是的,我尝试过。 –
请显示需要重现的实际代码。 – matt