使用自动布局设置UILabel字体大小的最佳位置

时间:2017-06-28 12:18:53

标签: 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;
}

- (void)loadViews {

    self.myLabel.font = [self.myLabel.font fontWithSize:20];
}

10文件中.xib时,它会以某种方式重置为.xib文件中的值。

我尝试在awakeFromNib设置它也无济于事。

2 个答案:

答案 0 :(得分:2)

尝试覆盖layoutSubviews

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

答案 1 :(得分:0)

为此,您需要在Identity检查器中使用用户定义的运行时属性。

为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