2 つのビュー (greenView、redView) とスイッチを持つビュー コントローラーがあります。
greenView から 50px の redView 上部スペースに制約があります。redView のすべての制約は次のとおりです。
タップすると greenView の高さを 50px から 100px に切り替えるスイッチがあります。
アプリを起動すると、ビューは思い通りにレイアウトされますが、スイッチをタップすると、greenView フレームの高さが 50 から 100 に変わり、redView が期待どおりに動作しません。 y を 50px 下に配置して、割り当てられた上部スペースの制約を維持します。競合がないように、redView の下部スペースに不等式制約を設定しており、[self.redView layoutIfNeeded]
.
関連するコードは次のとおりです。
- (IBAction)switchTapped {
if (theSwitch.isOn) {
greenView.frame = CGRectMake(0, 30, 320, 100);
[redView layoutIfNeeded];
} else {
greenView.frame = CGRectMake(0, 30, 320, 50);
[redView layoutIfNeeded];
}
redView の y 位置が更新されないのはなぜですか?
WWDC のビデオを見たことがありますが、layoutIfNeeded の呼び出しについて言及しているようです。私は何が欠けていますか?
起動時はこんな感じ。
そして、これはスイッチがタップされたときです: