我对此感到困惑,当我在子视图上使用自动布局时,layoutSubview方法会无限循环。
我所做的只是:
- (id)init
{
self = [super init];
if(self)
{
self.backgroundColor = [UIColor grayColor];
_imageView = [[UIImageView alloc] init];
_imageView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_imageView];
[self applyConstraints];
}
return self;
}
-(void)applyConstraints
{
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_imageView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_imageView)]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_imageView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_imageView)]];
}
这会导致layoutSubviews方法进入一个无限循环。实际上,即使没有调用applyConstraints方法,循环也会发生,唯一阻止它发生的方式是将"translatesAutoresizingMaskIntoConstraints"设置为YES。
有人遇到/解决过这个问题吗?
更新: 仅澄清一下,这是一个UIView子类,用于视图控制器中。该视图本身不使用自动布局,而是在初始化后以传统的方式设置其frame。