私がやろうとしているのは、View Controller を作成し、そのビューを右からアニメーション化することです。メインのView Controllerには、このビューを格納するviewContainerというビューがあります。奇妙なことに、これはシミュレーターと ipod 4g では完全に機能しますが、iPhone5 (両方とも ios6 を実行) では機能しません。
iPod 4g では、新しいビューは右から正しくアニメーション化されます。ただし、iPhone5 では、ビューはすぐに (0,0) に表示されます。何が原因でしょうか?
self.catViewController = [[CatViewController alloc] initWithNibName:@"CatViewController" bundle:nil];
[self.catViewController willMoveToParentViewController:nil];
[self addChildViewController:self.catViewController];
self.currentViewController = self.catViewController;
[self showNextViewController];
- (void) showNextViewController
{
NSLog(@"should be at x: %f", self.viewContainer.bounds.size.width); //This correctly logs 320 as the starting x position of the new view
//set the new view's position off screen to the right
self.currentViewController.view.frame = CGRectMake(self.viewContainer.bounds.size.width, self.viewContainer.bounds.origin.y, self.currentViewController.view.frame.size.width, self.currentViewController.view.frame.size.height);
[self.viewContainer addSubview:self.currentViewController.view];
//inexplicably to me, this logs 0.0 instead of 320 on the iphone5:
DLog(@"actual starting x position: %f", self.currentViewController.view.frame.origin.x);
[UIView animateWithDuration:kDefaultAnimationTime
delay:0.0f
options:UIViewAnimationOptionCurveEaseInOut
animations:^{self.currentViewController.view.frame = self.viewContainer.bounds;}
completion:^(BOOL finished){
//
}];
}