我已經爲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,但如果我不必這樣做,我不想做很多工作。