我们有一个多语言应用,其中标签中的文字大小可能会根据使用的语言而改变。例如德语在很多空间中使用的空间比英语多。在这种情况下,iOS会自动缩小文本,用"替换中间字母。"
e.g。取消变为Ca ..el
通过在标签中将adjustsFontSizeToFitWidth
设置为YES,可以轻松地单独修复这些案例。但是,为那里的每个标签做这件事都很费力。
有没有办法可以为应用中的所有UILabel
个实例全局设置为YES?我尝试使用UIAppearance,但它似乎不支持adjustsFontSizeToFitWidth
属性。
答案 0 :(得分:1)
我认为你可以在ViewDidLoad中为app的每个ViewController添加以下代码:
NSArray *allSub = [self.view subviews];
for (id sub in allSub) {
if ([sub isKindOfClass:[UILabel class]]) {
UILabel *lb =sub;
lb.adjustsFontSizeToFitWidth = YES;
}
}
答案 1 :(得分:1)
我认为更清洁的方法是为UILabel做一个类别:
#import <UIKit/UIKit.h>
@interface UILabel (FR)
@property(nonatomic) UIBaselineAdjustment baselineAdjustment;
@property(nonatomic) CGFloat minimumScaleFactor;
@end
#import "UILabel+FR.h"
@implementation UILabel (FR)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
- (void)didMoveToSuperview {
self.adjustsFontSizeToFitWidth = YES;
self.minimumScaleFactor = 0.5;
[super didMoveToSuperview];
}
#pragma clang diagnostic pop
@end
并将其包含在Prefix.h文件中