gpt4 book ai didi

ios - UIViewControllerAnimatedTransitioning 与 MPMoviePlayerViewController

转载 作者:可可西里 更新时间:2023-11-01 03:35:06 26 4
gpt4 key购买 nike

我正在尝试制作自定义演示动画,但 VC 是一个 MPMoviePlayerViewController。我正在学习本教程:

当我呈现 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, 0),fromViewController.view.frame.size};
[UIView animateWithDuration:[self transitionDuration:transitionContext] animations:^{
fromViewController.view.frame = finalFrame;
} completion:^(BOOL finished) {
[transitionContext completeTransition:YES];
}];
}
}

我尝试使用自己开发的 View Controller ,效果很好,MPMoviePlayerViewController 也应该如此吗?

最佳答案

我能够让它在解雇时正确设置动画的方法是在调用 [presentingViewController dismissViewControllerAnimated:YES 之前重新设置 transitioningDelegatemodalTransitionStyle ];

所以不仅仅是

- (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 类,您需要从 View Controller 中重构它。

关于ios - UIViewControllerAnimatedTransitioning 与 MPMoviePlayerViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21759100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com