viewDidLoad 内で次のコードを使用して UIView を作成しました (「secondview」は明らかに UIView の名前です)。
secondview = [[UIView alloc] initWithFrame:self.view.frame];
[secondview setBackgroundColor: [UIColor yellowColor]];
secondview.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:secondview];
次に、viewDidAppear 内で、このビューに制約を追加しました。
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:secondview attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeRight
multiplier:1.0f constant:-20.0f];
[self.view addConstraint:constraint];
ただし、制約はビューに適用されません (少なくとも私が見ることはできません)。代わりに、ビューが画面から消えたように見えます。ただし、制約コードがコメント化されている場合、ビューは適切なフレームで再度読み込まれます (明らかに、制約が適用されていません)。同じ制約を Button または ImageView に適用すると、制約は完全に適用されます。これは、ボタンも ImageView も実際にサイズを指定する必要がないため、ビューを作成するときの「initWithFrame」が原因であると考えるようになりました。
あなたの考えは何ですか?どうすればいいですか?