2

ポートレートモードではビューを垂直方向に中央に配置し、ランドスケープモードでは右に移動する必要があります (たとえば、150 ピクセル)。

いくつかの制約を設定しようとしましたが、それを突き止めることができないようです:

[myImage addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-(577@700)-[contentView]-(257@800)-|"
                                                                options:0
                                                                metrics:nil
                                                                  views:NSDictionaryOfVariableBindings(contentView)]];

NSLayoutConstraint *myConstraint = [NSLayoutConstraint constraintWithItem:contentView
                                                    attribute:NSLayoutAttributeCenterX
                                                    relatedBy:NSLayoutRelationEqual
                                                       toItem:myImage
                                                    attribute:NSLayoutAttributeCenterX
                                                   multiplier:1.0
                                                     constant:-1];
myConstraint.priority = 700;

[myImage addConstraint:myConstraint];

これは横向きモードでは機能しますが、縦向きモードでは機能しません。縦向きでは、左側の制約 (570@700) が失敗し、左側の制約 (257@800) が成功し、中央の X は実装されません。最初のセット (570@700 と 257@800) が両方とも失敗して、中央の X 制約に頼ることができるようにする必要があります。

または、centerX 制約を破棄する必要がありますか?

4

1 に答える 1

2

2つのオプションがあります。

  • contentView's CenterX = 's CenterXとなる制約を追加し、制約myImageへの参照を保存します。デバイスが横向きに回転したら、制約の定数を150に設定します。縦向きに回転する場合は、定数を0に設定します。
  • デバイスが回転したら、contentViewの水平方向の位置とサイズの制約を削除し、デバイスの向きに適切な制約を追加します。

最初のオプションは単純ですが、新しいAppleデバイスのサイズが異なる場合は将来性がありません。最初のオプションを使用する場合、制約は必要ありませんが、水平方向のサイズ@"H:|-(577)-[contentView]-(257)-|"を示すために制約が必要になります。contentView

どちらのオプションについても詳しく説明してほしい場合は、お知らせください。

于 2013-02-05T16:26:34.880 に答える