2017-07-17 3 views
0

制約を手動で追加しようとしています。キャッチされない例外により「NSGenericException」、 理由にAutolayoutがcenterX-centerYで動作しない

アプリを終了:私は、次のようなエラーにコードがcenterXとcenterY制約を追加しようとするたびに持っていビューに制約をインストールすることが」できません。 という制約は、ビューのサブツリーの外部から何かを参照していますか?それは です。制約: (アクティブ)>ビュー:>」

私は前から複数の質問を確認したが、何も助けなかっ:/

!My code[1]

CODE

[cell.contentView addSubview:imageView]; 
[cell.contentView addSubview:title]; 
title.translatesAutoresizingMaskIntoConstraints = NO; 
imageView.translatesAutoresizingMaskIntoConstraints = NO; 


NSLayoutConstraint *imageViewHeightConstraint = [NSLayoutConstraint 
                constraintWithItem:imageView 
                attribute:NSLayoutAttributeHeight 
                relatedBy:NSLayoutRelationEqual 
                toItem:nil 
                attribute:NSLayoutAttributeNotAnAttribute 
                multiplier:1.0 
                constant:[UIScreen mainScreen].bounds.size.width/8]; 
NSLayoutConstraint *imageViewWidthtConstraint = [NSLayoutConstraint 
               constraintWithItem:imageView 
               attribute:NSLayoutAttributeWidth 
               relatedBy:NSLayoutRelationEqual 
               toItem:imageView 
               attribute:NSLayoutAttributeHeight 
               multiplier:1.0 
               constant:0]; 
NSLayoutConstraint *imageViewCenterXConstraint = [NSLayoutConstraint 
               constraintWithItem:imageView 
               attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
               toItem:[imageView superview] 
               attribute:NSLayoutAttributeCenterX 
               multiplier:1.0 
               constant:0]; 

NSLayoutConstraint *imageViewCenterYConstraint = [NSLayoutConstraint 
                constraintWithItem:imageView 
                attribute:NSLayoutAttributeCenterY 
                relatedBy:NSLayoutRelationEqual 
                toItem:[imageView superview] 
                attribute:NSLayoutAttributeCenterY 
                multiplier:1.0 
                constant:0]; 
[imageView addConstraint:imageViewHeightConstraint]; 
[imageView addConstraint:imageViewWidthtConstraint]; 
[imageView addConstraint:imageViewCenterXConstraint]; 
[imageView addConstraint:imageViewCenterYConstraint]; 
+0

ストーリーボードで行うことは可能ですか?またはハードコーディングされている必要があります... – OhadM

+0

私はそれが動的である必要があるので、ストーリーボードで行うことはできません! –

+0

あなたのコードを画像ではなくテキストとして投稿してください。 – Kreiri

答えて

1

addConstraint行を削除し、制約のインスタンス化ごとに.active = YESを追加します。また、[image superview]cellに変更する

-2

ありがとうどうしてあなたを使用しないでください:

imageView.center = cell.center 

セル内に画像を配置する必要があります。

+1

質問は、特に自動レイアウトソリューションを求めています。 – Swinny89

0

ではなく、ImageViewの

に、ImageViewののスーパーに
[cell.contentView addConstraint:imageViewCenterXConstraint]; 
[cell.contentView addConstraint:imageViewCenterYConstraint]; 
0

をcenterXとcenterY制約を追加してみてください、これは後のImageViewのに制約を追加してみてください。

O-BjectiveについてC

[cell.contentView layoutIfNeeded]。 [self.view layoutIfNeeded];スウィフト

cell.contentView.layoutIfNeeded() self.view.layoutIfNeeded()

については

その後、後contentViewをセルにあなたImageViewのを追加し、第1の制約を与え、最初にこれを試してみてください。

関連する問題