プログラムで制約を追加するのに役立つMasonryライブラリを使用しています。問題はありませんが、ユーザーがデバイスを横向きから縦向きに回転させた後、アンインストールして新しい制約を追加する必要があるという問題に直面しました。私はかなり「残忍な」解決策を試しましたが、それは制約を変更しましたが、ほんの一瞬で「古い」制約を見ることができました。ユーザーがデバイスを回転させた後に制約を追加/削除する簡単な方法はありますか? それが私が試したことです(動作しますが、上記のように数秒で「古い」フレームが表示されました):
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)){
[bottomRight mas_updateConstraints:^(MASConstraintMaker *make) {
NSLog(@"We are on landscape");
make.top.equalTo(upperRight.mas_bottom).with.offset(20);
make.left.equalTo(self.view.mas_centerX).with.offset(20);
make.right.equalTo(bottomRightRight.mas_left).with.offset(-20);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-100);
make.width.equalTo(bottomRightRight);
}]; }
else {
NSLog(@"Swapped");
[bottomRight mas_updateConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(upperRight.mas_bottom).with.offset(200);
make.left.equalTo(self.view.mas_centerX).with.offset(200);
make.right.equalTo(bottomRightRight.mas_left).with.offset(-200);
make.bottom.equalTo(self.view.mas_bottom).with.offset(-200);
make.width.equalTo(bottomRightRight);
}];
}
}