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];
}
我不想使用模式视图,我宁愿不使用自定义动画块来更改视图的框架。