前言

上次给大家介绍了iOS利用UIBezierPath + CAAnimation实现路径动画效果的相关内容,今天实现一个根据心跳路径实现一个路径动画,让某一视图沿着路径进行运动.。

效果图如下:

核心代码

1-首先通过 drawRect 绘制心形路径

- (void)drawRect:(CGRect)rect {

// Drawing code

// 初始化UIBezierPath

UIBezierPath *path = [UIBezierPath bezierPath];

// 首先设置一个起始点

CGPoint startPoint = CGPointMake(rect.size.width/2, 120);

// 以起始点为路径的起点

[path moveToPoint:startPoint];

// 设置一个终点

CGPoint endPoint = CGPointMake(rect.size.width/2, rect.size.height-40);

// 设置第一个控制点

CGPoint controlPoint1 = CGPointMake(100, 20);

// 设置第二个控制点

CGPoint controlPoint2 = CGPointMake(0, 180);

// 添加三次贝塞尔曲线

[path addCurveToPoint:endPoint controlPoint1:controlPoint1 controlPoint2:controlPoint2];

// 设置另一个起始点

[path moveToPoint:endPoint];

// 设置第三个控制点

CGPoint controlPoint3 = CGPointMake(rect.size.width-100, 20);

// 设置第四个控制点

CGPoint controlPoint4 = CGPointMake(rect.size.width, 180);

// 添加三次贝塞尔曲线

[path addCurveToPoint:startPoint controlPoint1:controlPoint4 controlPoint2:controlPoint3];

// 设置线宽

path.lineWidth = 3;

// 设置线断面类型

path.lineCapStyle = kCGLineCapRound;

// 设置连接类型

path.lineJoinStyle = kCGLineJoinRound;

// 设置画笔颜色

[[UIColor redColor] set];

[path stroke];

}

2-添加心形路径View到主视图

HeartView *heart = [[HeartView alloc] init];

heart.frame = CGRectMake(0, 0, Screen_Width, Screen_Height-Screen_Height);

[self.view addSubview:heart];

3-给动画视图(红色圆形视图)添加轨迹路径动画

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];

// 设置动画的路径为心形路径

animation.path = self.path.CGPath;

// 动画时间间隔

animation.duration = 3.0f;

// 重复次数为最大值

animation.repeatCount = FLT_MAX;

animation.removedOnCompletion = NO;

animation.fillMode = kCAFillModeForwards;

// 将动画添加到动画视图上

[_demoView.layer addAnimation:animation forKey:nil];

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

本文标题: iOS利用UIBezierPath + CAAnimation实现路径动画效果

本文地址: http://www.cppcns.com/ruanjian/ios/209176.html

ios开发 方形到圆的动画_iOS利用UIBezierPath + CAAnimation实现路径动画效果相关推荐

  1. ios开发 方形到圆的动画_ios – cornerRadius上的CGAffineTransformMakeScale动画圆形UIButton...

    尝试将动画部分放在控制器类中而不是在子类按钮类中. //in customButton.h file #import @interface customButton : UIButton - (id) ...

  2. ios开发 方形到圆的动画_画个圆动画,的两种实现。iOS 动画由很浅,入浅,当然是 Swift...

    方法一,使用 CAShapeLayer 和 UIBezierPath 加上 CABasicAnimation 有一个动画属性 strokeEnd 就算完 方法二,复杂一些.频繁调用 CALayer 的 ...

  3. ios开发 方形到圆的动画_3Blue1Brown 动画制作教程(1)--制作第一个自己的动画

    制作第一个自己的动画 前一篇详细介绍了 3Blue1Brown 的动画引擎在 Windows 10 64 位系统上,基于 Anaconda的配置方法,并且详细描述了在配置 3Blue1Brown 提供 ...

  4. ios开发 方形到圆的动画_使用UIBezierPath画个圆动画

    UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般U ...

  5. iOS开发10-iOS SandBox(沙盒或沙盘)介绍、路径获取

    iOS开发10-iOS SandBox(沙盒或沙盘)介绍.路径获取 代码下载(Xcode7.0.1)  有问题请联系博主,邮箱:nathanlee1987@aliyun.com 1.沙盒路径的获取 & ...

  6. 【SwiftUI模块】0008、SwiftUI-自定义启动闪屏动画-App启动闪屏曲线路径动画

    SwiftUI小功能模块系列 0001.SwiftUI自定义Tabbar动画效果 0002.SwiftUI自定义3D动画导航抽屉效果 0003.SwiftUI搭建瀑布流-交错网格-效果 0004.Sw ...

  7. ios开发中计算代码运算时间_iOS日历、日期、时间的计算

    时间和日历的计算在iOS开发中经常看到,经常看到大家在百度,开源中国等搜索这些答案.今天写个简单的时间和日历有关的计算. 获取一个月的总天数 1.获取当月的天数 - (NSInteger)getNum ...

  8. Android开发笔记(一百八十七)利用估值器实现弹幕动画

    如今上网看电影电视越发流行了,追剧的时候经常看到视频上方数行评论向左边飘去,犹如子弹那样飞快掠过,这些评论文字因此得名"弹幕".弹幕评论由正在观看的网友们即兴发表,故而连绵不绝从画 ...

  9. iOS-利用UIBezierPath和CAAnimation制作路径动画

    继上篇的心跳动画,今天实现一个根据心跳路径实现一个路径动画,让某一视图沿着路径进行运动. 核心代码 1-首先通过 drawRect 绘制心形路径 - (void)drawRect:(CGRect)re ...

最新文章

  1. 高并发大型网站架构设计
  2. Kaggle八项大奖斩获其6:用于筛选和分析文献的paperai
  3. 更改SQL 2005登录时的默认数据库
  4. win32之hPrevInstance
  5. 全国省市区县数据库脚本
  6. C#创建带参数的线程
  7. Net设计模式实例之备忘录模式(Memento Pattern)
  8. P1447-[NOI2010]能量采集【GCD,数论,容斥】
  9. 【原创】自己编写的JavaGUI一键生成(hibernate/spring/mvc/maven)工具(附带视频教程源码)...
  10. javascript系列:NaN类型
  11. C#中StreamWriter与BinaryWriter的区别兼谈编码。
  12. 计算机办公软件中级考试题怎么做,计算机办公软件考试试题
  13. 【STM8L】STM8L之按键中断
  14. Android adb环境变量配置
  15. 1487 C. Minimum Ties
  16. win10 屏幕保护时间到了不触发_你真的了解Win10么?网友教你玩转Win10!
  17. 字符串的练习 统计字符串中大写,小写,数字的个数 29
  18. C语言基于easyx的打字训练软件。
  19. 金融快借贷款app下载域名微信内显示已停止访问该网页---被微信封杀或屏蔽的原因及预防措施
  20. 程序员职业生涯规划必读的十本书

热门文章

  1. 计算机用户锁定无法登陆,账户被锁定无法登录,电脑无法登录你的账户
  2. 2020 Dubbo面试题大全
  3. 【Makefile】Makefile文件中的 .PHONY 的作用
  4. android deeplink打开APP
  5. minio oss 分块上传
  6. 2.0.1-Reaper Midi 输入修改鼠标事件
  7. TCGA数据库ceRNA网络构建(三)ceRNA网络构建
  8. DNSPod十问贾宇航:告别“人工智障”?训练数据厂商为AI正名
  9. 黑盒测试用例设计方法一(等价类划分、边界值分析)
  10. java jaspersoft_java开源报表系统(Jaspersoft Studio)