iOS 环绕旋转动画实现
来源:互联网 发布:js遍历对象数组并替换 编辑:程序博客网 时间:2024/05/21 12:51
// 调用
DiyAnimation *circle = [[DiyAnimationalloc]initWithFrame:CGRectMake(0,120,320, 300)];
[circle setDiyAnimationBackgroundColor:[UIColororangeColor]];
[self.viewaddSubview:circle];
//DiyAnimation.h
-(void)setDiyAnimationBackgroundColor:(UIColor *)aColor;
//DiyAnimation.m
//创建环绕动画,传入两个个属性分别是 :运动开始的角度(右侧90度为0),运动结束的角度
-(void)createCircle:(float)startAngle andEndAngle:(float)endAngle
{
//创建运动的轨迹动画
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimationanimationWithKeyPath:@"position"];
pathAnimation.calculationMode =kCAAnimationPaced;
pathAnimation.fillMode =kCAFillModeForwards;
pathAnimation.removedOnCompletion =NO;
pathAnimation.duration =5.0;
pathAnimation.repeatCount =MAXFLOAT;
float x =20;
// (1 1) 绕z轴 (1 0) y (0 1) x (0 0) nil
float radiuscaleOne = 1;
float radiuscaleTwo = 1;
// 中心
CGFloat origin_x =self.frame.size.width /2 ;
CGFloat origin_y =self.frame.size.height /2 ;
// 半径
CGFloat radiusX =50;
CGMutablePathRef ovalfromarc =CGPathCreateMutable();
CGAffineTransform t2 =CGAffineTransformConcat(CGAffineTransformConcat(
CGAffineTransformMakeTranslation(-origin_x, -origin_y),
CGAffineTransformMakeScale(radiuscaleOne, radiuscaleTwo)),
CGAffineTransformMakeTranslation(origin_x, origin_y));
CGPathAddArc(ovalfromarc, &t2, origin_x, origin_y, radiusX,startAngle,endAngle,1);// 1逆时针 0顺时针
pathAnimation.path = ovalfromarc;
CGPathRelease(ovalfromarc);
// 圆形
UIView * circleView1 = [[UIImageViewalloc]init];
[selfaddSubview:circleView1];
circleView1.frame =CGRectMake(160,130, x, x);
[circleView1.layersetCornerRadius:x/2];
circleView1.backgroundColor = [UIColoryellowColor];
//设置运转的动画
[circleView1.layeraddAnimation:pathAnimationforKey:@"moveTheCircleOne"];
}
//贝塞尔画出路径
- (void)drawRect:(CGRect)rect {
CGFloat origin_x =self.frame.size.width/2;
CGFloat origin_y =self.frame.size.height/2;
CGContextRef context =UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
//整个圆
UIBezierPath *arc = [UIBezierPathbezierPathWithOvalInRect:CGRectMake(origin_x -100, origin_y - 100,200,200)];
[[UIColorwhiteColor]setStroke];
[arc stroke];
CGContextRestoreGState(context);
}
-(void)setDiyAnimationBackgroundColor:(UIColor *)aColor
{
self.backgroundColor = aColor;
[selfcreateCircle:M_PI /6andEndAngle:M_PI /6 +2 *M_PI];
}
- iOS 环绕旋转动画实现
- iOS 环绕动画 CAReplicatorLayer
- Css3-实现小圆环绕大圆360旋转
- iOS中旋转加载动画的实现
- iOS中旋转加载动画的实现
- iOS中旋转加载动画的实现
- 在ios中实现图片环绕文字效果
- iOS实现文字环绕图片textView布局
- 27.iOS 动画 旋转
- iOS旋转动画
- iOS 旋转动画
- ios动画旋转方向
- iOS 旋转动画
- ios立方体旋转动画
- iOS 旋转动画
- iOS球形旋转动画
- iOS - iOS平移旋转动画 通过核心动画实现(动画组)
- IOS--CALayer实现,界限、透明度、位置、旋转、缩放组合动画
- 微信开通检测 检测号码是否开通微信
- 关于block
- Java实现几种常见排序方法
- Netty轻量级对象池实现分析
- md5sum 处理文件夹
- iOS 环绕旋转动画实现
- 实践最有效的提高Android Studio运行、编译速度方案
- MVP+Dagger2+Rxjava+Retrofit+GreenDao 小应用,包含新闻、图片、视频3个大模块,代码整洁干练
- Android动态加载技术 简单易懂的介绍方式
- CF 446B DZY Loves Modification 优先队列
- UDP打洞NAT大致分为下面四类 P2P
- Cloud IDEs For Web Developers – Best Of
- 插件化开发--DroidPlugin
- 【SysML】用例图