我正在按照iOS文档中有关视图控制器的说明编写自定义视图控制器容器,但我在寻找一种优雅的方法来呈现第一个视图控制器并自动转发相关的显示消息(如viewWillAppear:
)时遇到了困难。
当我尝试使用transitionFromViewController:toViewController:duration:options:animations:completion:
函数,并将fromViewController:
参数设置为nil
时,会出现错误。因此,我采用了使用UIView
动画块将视图动画添加到视图层次结构中的方法。这似乎破坏了外观方法的自动转发,这意味着我需要在适当的时间调用viewWillAppear:
和ViewDidAppear:
。是否有更有效的方法来过渡第一个视图控制器以处理外观和旋转方法?
以下是我的代码示例,用于动画呈现第一个视图控制器:
self.visibleViewController = [[UIViewController alloc] init];
[self addChildViewController:self.visibleViewController];
[self.visibleViewController viewWillAppear:YES];
[self.visibleViewController.view setAlpha:0];
[self.view addSubview:self.visibleViewController.view];
[UIView animateWithDuration:0.5
delay:0
options:UIViewAnimationOptionCurveEaseOut
animations:^{
self.visibleViewController.view.alpha = 1;
}
completion:^(BOOL finished){
[self.visibleViewController viewDidAppear];
[self.visibleViewController didMoveToParentViewController:self];
}];