Ios7 UIPercentDrivenInteractiveTransition不插值变换属性
我目前正在尝试在两个视图控制器之间进行交互式转换。这是一个交互式动画。我使用Ios7 UIPercentDrivenInteractiveTransition不插值变换属性,ios7,controllers,Ios7,Controllers,我目前正在尝试在两个视图控制器之间进行交互式转换。这是一个交互式动画。我使用uipercentdriventeractivetransition的子类,并在另一个对象动画制作程序中执行以下动画 我没有成功地使交互插入toVC视图的transform属性 - (void) animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext { NSLog(@"Animate!!");
uipercentdriventeractivetransition
的子类,并在另一个对象动画制作程序中执行以下动画
我没有成功地使交互插入toVC
视图的transform
属性
- (void) animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
NSLog(@"Animate!!");
//Basic container
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
fromVC.view.frame = [transitionContext initialFrameForViewController:fromVC];
toVC.view.frame = [transitionContext finalFrameForViewController:fromVC];
toVC.view.transform = CGAffineTransformMakeScale(0.9, 0.9);
//[transitionContext.containerView insertSubview:toVC.view belowSubview:fromVC.view];
NSTimeInterval duration = [self transitionDuration:transitionContext];
[UIView animateWithDuration:duration animations:^{
[fromVC beginAppearanceTransition:NO animated:YES];
fromVC.view.frame = CGRectMake(0, CGRectGetHeight(fromVC.view.frame), CGRectGetWidth(fromVC.view.frame), CGRectGetHeight(fromVC.view.frame));
toVC.view.transform = CGAffineTransformIdentity;
[toVC beginAppearanceTransition:YES animated:YES];
} completion:^(BOOL finished){
[transitionContext completeTransition:![transitionContext transitionWasCancelled]];
if(finished)
{
[fromVC endAppearanceTransition];
[toVC endAppearanceTransition];
}
}];
}
-(void)animateTransfion:(id)transitionContext
{
NSLog(@“动画!!”);
//基本容器
UIViewController*fromVC=[transitionContext ViewControllerWorky:UITransitionContextFromViewControllerKey];
UIViewController*toVC=[transitionContext ViewControllerWorky:UITransitionContextToViewControllerKey];
fromVC.view.frame=[transitionContext initialFrameForViewController:fromVC];
toVC.view.frame=[transitionContext finalFrameForViewController:fromVC];
toVC.view.transform=CGAffineTransformMakeScale(0.9,0.9);
//[transitionContext.containerView insertSubview:toVC.view belowSubview:fromVC.view];
NSTimeInterval持续时间=[自转换持续时间:transitionContext];
[UIView animateWithDuration:持续时间动画:^{
[fromVC beginAppearanceTransition:否动画:是];
fromVC.view.frame=CGRectMake(0,CGRectGetHeight(fromVC.view.frame),CGRectGetWidth(fromVC.view.frame),CGRectGetHeight(fromVC.view.frame));
toVC.view.transform=CGAffineTransformity;
[toVC BeginAppearance过渡:是动画:是];
}完成:^(布尔完成){
[transitionContext completeTransition:![transitionContext transitionWasCancelled];
如果(完成)
{
[fromVC endAppearanceTransition];
[toVC endAppearanceTransition];
}
}];
}
我想让toVC从一个刻度开始,然后在fromVC从上到下滑动时完成,以适合屏幕
滑动是正确的插值,但变换只是简单地完成,而不是插值
错误在哪里我也遇到了这个问题。对我来说,解决方案是将
的快照转换为vc.view
,而不是转换为vc.view
。我不确定为什么这是必要的
您可以使用。您还需要将设置为vc.view
的转换为cGraffinetTransformIdentity
,并在动画开始之前将其隐藏。然后,在完成块中取消隐藏它