2017-06-28 56 views
2

如果我设置字体大小是这样的:最好的地方,设置的UILabel字体大小与自动布局

@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也无济于事。

+0

viewWillApear ...不会放在那里会工作吗? –

回答

2

尝试重写layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    self.myLabel.font = [self.myLabel.font fontWithSize:20]; 
} 
+0

它工作正常,但问题在于它会被不必要地设置多次,尽管它可以通过“BOOL”标志修复。我仍然不明白为什么在初始化包装视图后不工作,或者为什么它在自动布局之前工作。 –

0

为此,您需要使用身份检查用户定义的属性运行。

像这样为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。

您可以像这样分配用户定义的运行时属性。

enter image description here

+0

我无法在每个地方使用自定义的'UILabel'子类。 –

相关问题