Ios 使用自动布局设置UILabel字体大小的最佳位置
如果我这样设置字体大小:Ios 使用自动布局设置UILabel字体大小的最佳位置,ios,objective-c,uilabel,Ios,Objective C,Uilabel,如果我这样设置字体大小: @implementation MyView - (instancetype)init { self = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil].firstObject; if (self) { [self loadViews]; } return self; } - (v
@implementation MyView
- (instancetype)init {
self = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass([self class]) owner:nil options:nil].firstObject;
if (self) {
[self loadViews];
}
return self;
}
- (void)loadViews {
self.myLabel.font = [self.myLabel.font fontWithSize:20];
}
当.xib
文件中有10
时,它会以某种方式重置为.xib
文件中的值
我尝试在
awakeFromNib
中将其设置为无效。尝试覆盖布局子视图
- (void)layoutSubviews {
[super layoutSubviews];
self.myLabel.font = [self.myLabel.font fontWithSize:20];
}
为此,您需要在Identity inspector中使用用户定义的运行时属性 像这样为UILabel创建接口
@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
之后,按如下方式执行此操作
@implementation UILabel (CustomFont)
-(void)setFontName:(NSString *)value
{
CGFloat newsize = (self.font.pointSize * [UIScreen mainScreen].bounds.size.width)/320;
[self setFont:[UIFont fontWithName:self.font.fontName size:newsize]];
}
@end
在此函数中,它将根据屏幕大小将动态值设置为UILabel
您可以像这样分配用户定义的运行时属性
@interface UILabel (CustomFont)
-(void)setFontName:(NSString *)value;
@end
我不能在每个地方都使用自定义的
UILabel
子类。它可以工作,但问题是它会被不必要地设置多次,尽管可以使用BOOL
标志来修复。我仍然不明白为什么在初始化包装器视图之后,或者在自动布局之前,它不工作。ViewWillapar。。。放在那里不管用吗?