new*_*bie 5 objective-c ios ios7 ios-animations
我有一个 ViewController 可以说ViewControllerA,还有一个 ViewController 可以说ViewControllerB。
ViewControllerBViewControllerA通过使用自定义转换以模态方式呈现。
在视图控制器A中:
-(void)buttonClicked...
{
ViewControllerB * controller = [[ViewControllerB alloc] init];
[controller setModalPresentationStyle:UIModalPresentationCustom];
controller.transitioningDelegate = self;
[self presentViewController:controller animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)
在 ViewControllerA 中 -
#pragma mark - UIViewControllerTransitioningDelegate
-
(id<UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented
presentingController:(UIViewController *)presenting
sourceController:(UIViewController *)source
{
FadeInWithPopAnimator* fadeInAnimator = [[FadeInWithPopAnimator alloc] init];
return fadeInAnimator;
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为的自定义 Animator 类FadeInWithPopAnimator,它实现了transitionDuration 和animationTransition 方法。
ViewControllerB我想在过渡动画开始 0.2 秒后,在呈现的视图控制器上对几个视图进行动画处理。
我已经阅读了在线文档,看起来使用过渡协调器是正确的方法。但我应该把代码放在哪里呢?
1)在调用presentViewController时ViewControllerA?
2)在动画师类中?
3)在viewWillAppear中ViewControllerA?
我尝试了一些方法,但它没有给我结果,而且很难找到例子。
呈现的视图控制器上的 TransitionCoordinator 将在视图控制器的动画开始后设置,因此在viewWillAppear呈现的视图控制器中。animateAlongsideTransition:completion:使用过渡协调器添加任何额外的动画。对于您在 ViewControllerB 中的情况:
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear];
[self.transitionCoordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
// change any properties on your views
} completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8711 次 |
| 最近记录: |