Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用自动布局设置UILabel字体大小的最佳位置_Ios_Objective C_Uilabel - Fatal编程技术网

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。。。放在那里不管用吗?