1. ホーム
  2. ios

[解決済み] プログラム的にautolayoutを使用して、superViewに等しい幅と高さ?

2023-05-01 06:37:05

質問

ネット上でたくさんのスニペットを探していますが、まだ私の問題に対する答えを見つけることができません。私の質問は、私はscrollView(SV)があり、私はユーザーがデバイスを回転させたときにボタンがscrollView(SV)の同じフレームを持っているように、scrollView(SV)であるそのスーパービューの同じ幅と高さでプログラム的にscrollView(SV)の内部にボタンを追加したいのですが、NSLayout/NSLayoutConstraintはどうすればいいのでしょうか? ありがとうございます。

どのように解決するのですか?

これが最も効率的な方法かどうかは分かりませんが、うまくいきました。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.translatesAutoresizingMaskIntoConstraints = NO;
// initialize


[coverForScrolView addSubview:button];

NSLayoutConstraint *width =[NSLayoutConstraint
                                    constraintWithItem:button
                                    attribute:NSLayoutAttributeWidth
                                    relatedBy:0
                                    toItem:coverForScrolView
                                    attribute:NSLayoutAttributeWidth
                                    multiplier:1.0
                                    constant:0];
NSLayoutConstraint *height =[NSLayoutConstraint
                                     constraintWithItem:button
                                     attribute:NSLayoutAttributeHeight
                                     relatedBy:0
                                     toItem:coverForScrolView
                                     attribute:NSLayoutAttributeHeight
                                     multiplier:1.0
                                     constant:0];
NSLayoutConstraint *top = [NSLayoutConstraint
                                   constraintWithItem:button
                                   attribute:NSLayoutAttributeTop
                                   relatedBy:NSLayoutRelationEqual
                                   toItem:coverForScrolView
                                   attribute:NSLayoutAttributeTop
                                   multiplier:1.0f
                                   constant:0.f];
NSLayoutConstraint *leading = [NSLayoutConstraint
                                       constraintWithItem:button
                                       attribute:NSLayoutAttributeLeading
                                       relatedBy:NSLayoutRelationEqual
                                       toItem:coverForScrolView
                                       attribute:NSLayoutAttributeLeading
                                       multiplier:1.0f
                                       constant:0.f];
[coverForScrolView addConstraint:width];
[coverForScrolView addConstraint:height];
[coverForScrolView addConstraint:top];
[coverForScrolView addConstraint:leading];