
当我呈现MPMovIEPlayerVIEwController时,一切都是正确的.
但是当我解雇它时,只需要方法:
- (ID <UIVIEwControllerAnimatedTransitioning>)animationControllerFordismissedController:(UIVIEwController *)dismissed
不叫,我做错了什么?
这是代码:
- (IBAction)playbuttontouchedIn:(ID)sender { NSURL *url = [[NSBundle mainBundle]URLForResource:@"Learn to speak Spanish quickly with funny vIDeos on youtube" withExtension:@"mp4"]; MPMovIEPlayerVIEwController *player = [[MPMovIEPlayerVIEwController alloc]initWithContentURL:url]; player.TransitioningDelegate = self; player.modalTransitionStyle = UIModalPresentationCustom; [player.movIEPlayer setShouldAutoplay:NO]; player.movIEPlayer.controlStyle = MPMovIEControlStyleNone; [self presentVIEwController:player animated:YES completion:^{ [player.movIEPlayer play]; player.movIEPlayer.controlStyle = MPMovIEControlStyleFullscreen; }];} UIVIEwControllerTransitioningDelegate方法:
- (ID <UIVIEwControllerAnimatedTransitioning>)animationControllerForPresentedController: (UIVIEwController *)presented presentingController:(UIVIEwController *)presenting sourceController:(UIVIEwController *)source{ self.presenting = YES; return self;}- (ID <UIVIEwControllerAnimatedTransitioning>)animationControllerFordismissedController:(UIVIEwController *)dismissed{ self.presenting = NO; return self;} UIVIEwControllerAnimatedTransitioning方法
- (NSTimeInterval)TransitionDuration:(ID <UIVIEwControllerContextTransitioning>)TransitionContext{ return 0.7;}- (voID)animateTransition:(ID <UIVIEwControllerContextTransitioning>)TransitionContext{ UIVIEwController *fromVIEwController = [TransitionContext vIEwControllerForKey:UITransitionContextFromVIEwControllerKey]; UIVIEwController *toVIEwController = [TransitionContext vIEwControllerForKey:UITransitionContextToVIEwControllerKey]; if (self.isPresenting) { [fromVIEwController.vIEw setUserInteractionEnabled:NO]; [TransitionContext.containerVIEw addSubvIEw:fromVIEwController.vIEw]; [TransitionContext.containerVIEw addSubvIEw:toVIEwController.vIEw]; CGRect startFrame = toVIEwController.vIEw.frame; toVIEwController.vIEw.frame = (CGRect){CGPointMake(toVIEwController.vIEw.frame.size.wIDth,0),startFrame.size}; [UIVIEw animateWithDuration:[self TransitionDuration:TransitionContext] delay:0.0f usingSpringWithdamPing:0.5f initialSpringVeLocity:4.0f options:UIVIEwAnimationoptionCurveEaSEOut animations:^{ toVIEwController.vIEw.frame = startFrame; } completion:^(BOol finished) { [TransitionContext completeTransition:YES]; [fromVIEwController.vIEw setUserInteractionEnabled:YES]; }]; } else{ [toVIEwController.vIEw setUserInteractionEnabled:YES]; [TransitionContext.containerVIEw addSubvIEw:toVIEwController.vIEw]; [TransitionContext.containerVIEw addSubvIEw:fromVIEwController.vIEw]; CGRect finalFrame = (CGRect){CGPointMake(-fromVIEwController.vIEw.frame.size.wIDth,fromVIEwController.vIEw.frame.size}; [UIVIEw animateWithDuration:[self TransitionDuration:TransitionContext] animations:^{ fromVIEwController.vIEw.frame = finalFrame; } completion:^(BOol finished) { [TransitionContext completeTransition:YES]; }]; }} 我尝试过用我开发的视图控制器,它工作得很好,所以应该是MPMovIEPlayerVIEwController吗?
解决方法 我在解雇时能够正确设置动画的方法是在调用[presentVIEwController dismissVIEwControllerAnimated:YES]之前重新设置TransitioningDelegate和modalTransitionStyle;而不仅仅是
- (IBAction) closepressed:(ID)sender { [self.presentingVIEwController dismissVIEwControllerAnimated:YES];} 你会的
- (IBAction) closepressed:(ID)sender { MPCustomModalTransitionDelegate *delegate = [[MPCustomModalTransitionDelegate alloc]init]; self.TransitioningDelegate = delegate; self.modalTransitionStyle = UIModalPresentationCustom; [self.presentingVIEwController dismissVIEwControllerAnimated:YES];} 这里明显的区别是添加了一个新的MPCustomModalTransitionDelegate类,您需要从视图控制器中重构它.
总结以上是内存溢出为你收集整理的ios – 使用MPMoviePlayerViewController进行UIViewControllerAnimatedTransitioning全部内容,希望文章能够帮你解决ios – 使用MPMoviePlayerViewController进行UIViewControllerAnimatedTransitioning所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)