当我使用initWithFrame时,一切都很好。但是我的主管建议,autoLayout通常是更好的做法。因此,我尝试向imageView添加4个约束,但是当我在模拟器上运行它时,突然它不会显示在屏幕上。
- (UIImageView *) titleImage
{
if (!_titleImage){
_titleImage =[[UIImageView alloc] init];
_titleImage.image = [UIImage imageNamed:@"Example.png"];
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:_titleImage
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:100]];
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:_titleImage
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeLeading
multiplier:1.0
constant:100]];
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:_titleImage
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeTrailing
multiplier:1.0
constant:-100]];
[self.view addConstraint:
[NSLayoutConstraint constraintWithItem:_titleImage
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:1.0
constant:-100]];
}
return _titleImage;
}
然后在loadView方法中...
[self.view addSubview:self.titleImage];
当我刚使用initWithFrame
x
,y
,width
,height
时,它工作正常。我删除了该行并添加了4个约束,现在我无法在屏幕上显示它。 最佳答案
在添加约束之前,应将_titleImage
添加为子视图。
在与AutoLayout一起使用的任何视图上,都必须调用:
[_titleImage setTranslatesAutoresizingMaskIntoConstraints:NO];