iOS图片360度旋转
Yourtion 创作于:2014-03-03
全文约 1495 字,
预计阅读时间为 5 分钟
最近一个项目需要对图片进行不断旋转,实现方法也比较简单,代码分享之~
利用CABasicAnimation
添加一个动画层,让图片围绕Z轴旋转,通过不同的图层组合和时间,可以调出各种效果。
核心的Function
如下,传入一个UIImageView
,会返回一个不断旋转的UIImageView
,可以控制动画时间和长度。唯一的不足是没办法回调或在动画执行过程中得知动画进行的情况。
先上代码:
- (UIImageView *)rotate360DegreeWithImageView:(UIImageView *)imageView {
CABasicAnimation *animation = [ CABasicAnimation
animationWithKeyPath: @"transform" ];
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
//围绕Z轴旋转,垂直与屏幕
animation.toValue = [ NSValue valueWithCATransform3D:
CATransform3DMakeRotation(M_PI/2, 0.0, 0.0, 1.0) ];
animation.duration = 0.4;
//旋转效果累计,先转180度,接着再旋转180度,从而实现360旋转
animation.cumulative = YES;
animation.repeatCount = 16;
animation.removedOnCompletion = YES;
CGRect imageRrect = CGRectMake(0, 0,imageView.frame.size.width, imageView.frame.size.height);
UIGraphicsBeginImageContext(imageRrect.size);
[imageView.image drawInRect:imageRrect];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[imageView.layer addAnimation:animation forKey:nil ];
return imageView;
}
使用方法:
// 开始动画Loding为UIImageView
Loding = [self rotate360DegreeWithImageView:Loding];
//结束动画
[Loding.layer removeAllAnimates];
相关参数解析:
// 旋转方向——顺时针
CATransform3DMakeRotation(M_PI/2, 0.0, 0.0, 1.0)
// 旋转方向——逆时针
CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0)
// 动画无限循环
animation.repeatCount = 0;
// 动画时间0.4秒
animation.duration = 0.4;
其他的可以自己摸索,比较简单就不上Demo了
原文链接:https://blog.yourtion.com/ios-photo-360-degree-rotation.html