通常,您使用:
label.adjustsFontSizeToFitWidth = YES;
制作标签,以便在无法再增加其框架大小时减小其字体大小。
有没有什么方法可以让它尝试使用替代字体,比如相同字体系列的精简版本,然后再缩小字体大小?
答案 0 :(得分:3)
有一些好方法可以解决这个问题。在IB中选择您的标签:
方法1:
如果单击加号按钮,则可以为给定的大小类添加特定字体。
在代码中:
- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection
{
if(self.view.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular && self.view.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassRegular)
{
//iPad here
myLbl.Font = [UIFont fontWithName:@"Heyo" size:10];
}
}
在我看来,更好的方法是方法2:
使用这种方法,您可以告诉字体缩小到一定大小,或者改为识别比例因子。玩具有这些值,直到获得所需的结果。我还在这个tutorial中讨论了这个主题。
在代码中:
//Minimum font size
[myLbl setMinimumScaleFactor:MIN_FONT_SIZE/[UIFont labelFontSize]];
//Scale factor
[myLbl setMinimumScaleFactor:0.4];
答案 1 :(得分:1)
这对我没有用,但确实如此。 您还需要在IB
中使用系统字体#import <UIKit/UIKit.h>
@interface UILabelEx : UILabel
@end
#import "UILabelEx.h"
#import "Constants.h"
@implementation UILabelEx
- (void) traitCollectionDidChange: (UITraitCollection *) previousTraitCollection {
[super traitCollectionDidChange: previousTraitCollection];
self.font = [UIFont fontWithName:APP_FONT size:self.font.pointSize];
}
@end