我注意到,在一些字體,如果對它們的幀大小由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