16

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」が原因であると考えるようになりました。

あなたの考えは何ですか?どうすればいいですか?

4

1 に答える 1

12

これに出くわした人のために...複数の制約を追加する必要がありました。それはトリックをしました。

于 2012-10-09T10:55:16.863 に答える