2016-08-01 32 views
0

私はinitWithFrameを使用していたが、すべてが問題なくだった。しかし、私の上司は、autoLayoutは一般的にはより良い方法であると言いました。そこで、imageViewに4つの制約を追加しようとしましたが、シミュレータで実行すると突然画面に表示されません。それがうまく働いていたiOS autoLayoutビューが画面に表示されませんか?

私が持っているloadViewメソッドで
- (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; 
} 

そして...

[self.view addSubview:self.titleImage]; 

私はちょうどinitWithFrame xywidthheightを使用。私はその行を削除し、4つの制約を追加したので、私はそれを私の画面に表示することはできません。

+0

をあなたは –

+0

をaddSubview後にそう、私は私のセッターに制約を追加することはできません制約を追加する必要がありますか? – BeefJurky

答えて

2
  1. 制約を追加する前に、_titleImageをサブビューとして追加する必要があります。 、あなたは組織図のオートレイアウトを使用している任意のビューで
  2. 呼び出す必要があります:

    [_titleImage setTranslatesAutoresizingMaskIntoConstraints:NO]; 
    
+0

それをした、ありがとう – BeefJurky

関連する問題