これがすべてIBでできるかどうかはわかりません。もしそうなら、私はまだそれを理解していません。以下に示すように、コードで実行しました。まず、画像ビューの上部からメインビューの上部までの固定値の制約と、画像ビューとログインビューの間の制約から始めます。これはシステムを満たすのに十分なはずであり、メインビューの上部または下部にある他の制約を削除できます(テストでは、固有の高さを持つボタンを使用したので、それを設定する必要はありませんでした。ビューには固有または特定の高さが設定されていません。これも行う必要があります)。次に、コードでその制約を一番上(IBOutlet conTop)に削除し、一番下に作り直します。
@implementation ViewController {
IBOutlet NSLayoutConstraint *conTop;
IBOutlet UIButton *button;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.view removeConstraint:conTop];
conTop = [NSLayoutConstraint constraintWithItem:button attribute:NSLayoutAttributeTop relatedBy:0 toItem:self.view attribute:NSLayoutAttributeBottom multiplier:.5 constant:-120];
[self.view addConstraint:conTop];
[self.view layoutSubviews];
}
乗数と定数を併用することで、回転後の動きを調整できます。ここで選んだ数字は私にはかなり良さそうに見えましたが、それらをいじって、それらが何をしているのかを確認することができます。乗数は感度係数と考えることができます。その分数が小さいほど、回転時に上からの距離の変化が少なくなります。正確な値が必要な場合は、小さな代数を使用して乗数と定数の値を計算できます。