私の UIViewController は、制御しているビューを取得して、次のように完全に再構築します。
[self.view rebuildYourself:bIsLandscape]; // this line is in the ViewController
ビュー自体には、次のメソッドが含まれます。
-(void)rebuildYourself:(BOOL)isLandscape
{
NSArray *viewsToRemove = [self subviews];
for (UIView *v in viewsToRemove) {
[v removeFromSuperview];
}
[self addControls]; // adds lots of views
[self layoutControlsWithOrientation:isLandscape]; // frames the views
}
トランジション全体をアニメーション化したいと思います。私はこれを試しました:
[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationOptionTransitionCurlUp
animations:^{
[self.view rebuildYourself:bIsLandscape];
}
completion:^(BOOL finished){
}];
ただし、アニメーションは UIViewAnimationOptionTransitionCurlUp のオプション値を無視し、毎回左上隅から流れ込みます。
そして私はこれを試しました:
[UIView beginAnimations:@"kkk" context:nil];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];
[UIView setAnimationDuration:1.0];
[self.view rebuildYourself:bIsLandscape];
[UIView commitAnimations];
しかし、この場合、トランジションはうまくカールしますが、トランジションが終了するまで下にあるビューは空白になり、その後、新しいビューが突然「ポップ」してビューに表示され、トランジションの効果が損なわれます。
ビューが完全に再構築されるトランジションをアニメーション化する正しい/最良の方法を誰か教えてもらえますか?
ありがとう