カスタム コンテナ ビュー コントローラを構築しようとしており、独自のアニメーションを作成しようとしています。タップしたセルを画面の中央に移動してから、スケーリングして新しいビューを表示することでズームインするという簡単なことから始めています。私はこれから始めています:
- (void)showDetailViewController:(UIView *)viewToAnimate {
UIImageView *anImageView = [[UIImageView alloc] initWithImage:[self screenShot:_homeViewController.view]];
CGRect windowBounds = [[UIScreen mainScreen] bounds];
_detailViewController.view.frame = windowBounds;
[self addChildViewController:_detailViewController];
// get a screenshot of the old view before pushing the new view controller
_detailViewController.view.alpha = 0.0;
NSLog(@"center: %@", NSStringFromCGPoint(viewToAnimate.center));
[self transitionFromViewController:_homeViewController toViewController:_detailViewController duration:0.5 options:0 animations:^{
CGPoint windowCenter = CGPointMake(CGRectGetMidX(windowBounds), CGRectGetMidY(windowBounds));
viewToAnimate.center = windowCenter;
viewToAnimate.layer.transform = CATransform3DMakeScale(2, 2, 2);
NSLog(@"center 2 : %@", NSStringFromCGPoint(viewToAnimate.center));
_detailViewController.view.alpha = 1.0;
}completion:^(BOOL finished) {
[anImageView removeFromSuperview];
}];
[_detailViewController didMoveToParentViewController:self];
}
私が理解していないのは、_detailViewController.view.alpha = 0 と _detailViewController.view.alpha = 1 をコメントアウトすると、アニメーションが表示されないことです。新しい childViewController にジャンプするだけです。しかし、これらの 2 行でアニメーションが表示されます。何故ですか?ありがとう。
編集:これは、コンテナコントローラーをセットアップする方法です: ContainerViewController の viewDidLoad:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPad" bundle:nil];
_homeViewController = [storyboard instantiateViewControllerWithIdentifier:@"HomeViewController"];
_homeViewController.homeViewControllerDelegate = self;
_detailViewController = [storyboard instantiateViewControllerWithIdentifier:@"DetailViewController"];
[self setSubViewControllers:@[ _homeViewController, _detailViewController]];
_selectedViewController.view.frame = [[UIScreen mainScreen] bounds];
[self addChildViewController:self.selectedViewController];
[self.view addSubview:_selectedViewController.view];
[self didMoveToParentViewController:self];