iOS の自動レイアウトは初めてです。私は原則としてこのコンセプトが本当に好きですが、最も単純なことを成し遂げようとするのは気が狂ってしまいます. 単純な基本原則がまだ欠けているのではないかと思います。アプリで実際に作業する前に、基本を習得して習得しようとしているので、非常に単純なテスト プロジェクトを作成しています。これは、期待どおりに機能しない単純なものです。まずは動く部分。IB では、viewcontroller 全体を埋めるビューを追加すると、XCode は自動的に制約を Top/Bottom/Leading/Trailing に設定し、Space を 0 に設定します。IB を使用すると、期待どおりに動作します。
に回転します
すごい!
今、私はコードで同じことをしようとしています:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIView *redView = [[UIView alloc] initWithFrame:self.view.bounds];
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
redView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0f constant:0.0f]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:redView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.0f]];
}
シングルビュー アプリケーションのデフォルト コード以外のコードはこれですべてです。
上記のコードを実行すると、プログラムで IB を使用して取得したものと同じものをミラーリングしようとすると、ローテーション後に次のようになります。
同じ制約が異なる結果につながるのはなぜですか? 私が見逃しているのは、おそらく本当に単純で恥ずかしいほど愚かなことです。ヘルプ!!!