2
我想創建一個UINavigationController的類別,所以我可以放在一起的幾個自定義動畫。我遇到了this question,它讓我開始了。我想出了一個推動作用如下:iPhone - UINavigationController - 自定義動畫與CATransaction
- (void)pushViewControllerMoveInFromBottom:(UIViewController *)viewController {
[CATransaction begin];
CATransition *transition;
transition = [CATransition animation];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromBottom;
transition.duration = 0.7;
[CATransaction setValue:(id)kCFBooleanTrue
forKey:kCATransactionDisableActions];
[[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
[self pushViewController:viewController animated:YES];
[CATransaction commit];
}
我不明白這視圖/正在通過電話子視圖訪問層。所以如果有人能幫助我理解,那會很有幫助。這似乎正在影響任何觀點即將登上熒幕。
但我的主要問題是,我試圖創建一個流行,將「撤消」上述功能。爲了清楚起見,可以說我有兩個視圖,A和B.A是第一個顯示在屏幕上的視圖。上面的功能將在B中移動而不會將A推出。很像一個模態的觀點。但是,下面的函數將B拉回B,而不是將B拉開並將A留在原地。
- (void)popViewControllerMoveInFromTop {
[CATransaction begin];
CATransition *transition;
transition = [CATransition animation];
transition.type = kCATransitionMoveIn;
transition.subtype = kCATransitionFromTop;
transition.duration = 0.7;
[CATransaction setValue:(id)kCFBooleanTrue
forKey:kCATransactionDisableActions];
[[[[self.view subviews] objectAtIndex:0] layer] addAnimation:transition forKey:nil];
[self popViewControllerAnimated:YES];
[CATransaction commit];
}
我不想使用模式視圖,我寧願不使用自定義動畫塊來更改視圖的框架。