我已经为iPad创建了自己的分割视图控制器。我创建自己的主要目的是允许用户随意打开/关闭左侧疼痛。我遇到的问题是我无法找到一种方法来让视图控制器在我的右边疼痛中动画化变化。我在分割视图控制器中为视图设置动画,但右窗格中的所有其他子视图控制器不会为其视图设置动画。我没有切换视图,所以我不能使用这些方法中的任何一种,也不会改变方向,所以这些方法都没有了(尽管我尝试了它们,但它没有奏效)。有谁知道一种方法来做到这一点?UIViewController容器子控制器动画
目前,我的代码来启动动画是:
- (void) setShowLeftPane:(BOOL)showLeftPane{
if (_showLeftPane != showLeftPane){
_showLeftPane = showLeftPane;
//Alert viewcontrollers and perform animation
if (showLeftPane) [_leftController viewWillAppear:YES];
else [_leftController viewWillDisappear:YES];
[UIView animateWithDuration:.25 animations:^{
[self layoutViews];
[_rightController viewWillLayoutSubviews];
} completion:^(BOOL fin){
[_rightController viewDidLayoutSubviews];
if (_showLeftPane) [_leftController viewDidAppear:YES];
else [_leftController viewDidDisappear:YES];
}];
//Switch out the appropriate pane button view
[_showLeftPane ? _openLeftPane : _closeLeftPane removeFromSuperview];
[self.view addSubview:_showLeftPane ? _closeLeftPane : _openLeftPane];
}
}
目前我的右窗格视图控制器是一个UINavigationController,所以我负责的一个股票类。我曾考虑给UINavigationController添加一个类别方法viewWillAnimateSubviewLayoutWithDuration:(NSTimeInterval)interval
,该方法将循环它的视图控制器测试/发送相同的方法到它的视图控制器,以便它们可以执行它们的动画,但这并不是很理想,尤其是如果有一种方法可以使用stock方法。
我正在考虑编写自己的NavigationController,但如果我不必这样做,我不想做很多工作。