您的位置:首页 > 移动开发 > IOS开发

iOS开发 ----- 新的转场动画

2015-11-04 22:50 609 查看

新写的一个动画(其实是别人的)

这里有自定义转场动画的解释

这里是Demo



这里主要用到了layer的mask属性,用来实现这种扩散的效果

-(void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
_transitionContext = transitionContext;
UIView * containerView = [transitionContext containerView];

UIViewController * fromeViewController = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController * toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

[containerView addSubview:toViewController.view];

UIBezierPath * circleInit = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(335, 64, 44, 44)];

CGPoint extremePoint = CGPointMake(335+22 - 0,  64+22 - CGRectGetHeight(toViewController.view.bounds));
CGFloat radius = sqrt((extremePoint.x*extremePoint.x) + (extremePoint.y*extremePoint.y));
//这个可以自己写一下,用不同的曲线可以起到不同的作用
UIBezierPath * circleFinal = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(CGRectMake(335, 64, 44, 44), -radius, -radius)];

NSLog(@"RECk : %@",NSStringFromCGRect(CGRectInset(CGRectMake(335, 64, 44, 44), -radius, -radius)));

CAShapeLayer * masklayer = [CAShapeLayer layer];

masklayer.path = circleFinal.CGPath;

toViewController.view.layer.mask = masklayer;

CABasicAnimation * animation = [CABasicAnimation animation];
animation.keyPath = @"path";

animation.fromValue = (__bridge id _Nullable)(circleInit.CGPath);
animation.toValue = (__bridge id _Nullable)(circleFinal.CGPath);
animation.duration = 0.3;
animation.delegate = self;

[masklayer addAnimation:animation forKey:@"path"];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: