首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CABasicAnimation圆形CAShapeLayer在地图上移动,而不是缩放

CABasicAnimation是iOS开发中的一个动画类,用于创建基本的动画效果。CAShapeLayer是CALayer的子类,用于绘制和管理图形路径。在地图上移动圆形CAShapeLayer,可以通过以下步骤实现:

  1. 创建CAShapeLayer对象,并设置其路径为一个圆形。可以使用UIBezierPath来创建圆形路径,然后将其设置为CAShapeLayer的path属性。
代码语言:swift
复制
let circleLayer = CAShapeLayer()
let circlePath = UIBezierPath(arcCenter: CGPoint(x: centerX, y: centerY), radius: radius, startAngle: 0, endAngle: CGFloat.pi * 2, clockwise: true)
circleLayer.path = circlePath.cgPath
  1. 创建CABasicAnimation对象,并设置其属性为位置变化。可以使用keyPath属性来指定动画的属性类型为position。
代码语言:swift
复制
let animation = CABasicAnimation(keyPath: "position")
  1. 设置动画的起始位置和结束位置。可以使用fromValue和toValue属性来设置动画的起始值和结束值。
代码语言:swift
复制
animation.fromValue = NSValue(cgPoint: startPoint)
animation.toValue = NSValue(cgPoint: endPoint)
  1. 设置动画的其他属性,如动画的持续时间、重复次数、速度等。
代码语言:swift
复制
animation.duration = 2.0
animation.repeatCount = Float.infinity
animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
  1. 将动画添加到CAShapeLayer上,并将CAShapeLayer添加到地图的对应图层上。
代码语言:swift
复制
circleLayer.add(animation, forKey: "positionAnimation")
mapView.layer.addSublayer(circleLayer)

通过以上步骤,就可以在地图上实现一个圆形CAShapeLayer的移动动画效果。

推荐的腾讯云相关产品:腾讯云地图服务(https://cloud.tencent.com/product/maps)可以提供地图相关的服务和功能,如地图展示、地理编码、路径规划等,可以与上述动画效果结合使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

绘图-几个较复杂统计图案例的实现分析

后,直接对 CAShapeLayer的strokeEnd 作CABasicAnimation动画,就会出现,三条横线依次出现的动画,很巧妙,不是你看到的初始化三条UIBezierPath。...最后对CAShapeLayer的strokeEnd 作CABasicAnimation动画即可实现。...小圆点的动画 根据数据源,每一数据点处放上一个自定义UIView,在此自定义UIView的drawRect中绘制圆形图形,并且设置 shape.layer.opacity = 0;,即让这些小圆点(...渐变区域的动画 我们仔细观察上图会发现,渐变区域的动画是这样的,先慢慢变清晰,同时波浪往上移动的效果,它是怎样实现的呢?...recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, scale, scale); //缩放大小基础下进行累加变化

1.4K20

Swift动画 —— 进度条

viewDidLoad中将shapeLayer的.strokeEnd 设为0 shapeLayer.strokeEnd = 0 之后handleTap中为shapeLayer添加动画。...这里有个问题就是开始的位置应该是圆的上方不是右边,这里就需要去修改shapeLayer的transform,这样就会从圆的上方开始动画了。...shapeLayer.transform = CATransform3DMakeRotation(-CGFloat.pi / 2, 0, 0, 1) (滑动显示更多) 这里还有个问题就是圆圈的头是直线不是圆形的...let pulsatingLayer = CAShapeLayer() viewDidLoad中设置好属性并添加为view的layer的sublayer pulsatingLayer.path =...方法里为pulsatingLayer添加一个放大1.5倍。 时间为1秒的动画,并将其autoreverses设为true,这样放大后会自动缩放到原来的大小,最后将重复次数设为无限大。

2.7K10

iOS动画系列之七:实现类似Twitter的启动动画1. CAKeyframeAnimation2. CAAnimationGroup3. 实现类似Twitter的启动动画

码云上看了一下下载的统计,发现其实下载的童鞋并不是特别多。如果只是看看思路,或者复习一下这些基础知识,确实是很快。但是如果对于这些内容不是特别熟悉,建议还是敲一边代码,看看自己能碰到什么坑。...只能从一个数值(fromValue)变到另一个数值(toValue),CAKeyframeAnimation会使用一个NSArray保存这些数值。...= @(M_PI * 2); // 创建缩放的动画 CABasicAnimation *basicScale = [CABasicAnimation animationWithKeyPath...它类似于一个子图层,相对于父图层(即拥有该属性的图层)布局,但是它却不是一个普通的子图层。不同于其他能够父图层中绘制出图像的子图层,mask图层定义了父图层的部分可见区域。...好,下篇其实有一个重头,就是CAShapeLayer。因为在工作中碰到的大部分动画都是通过UIView的动画block实现,其他都基本上都是需要用到CAShapeLayer

1.4K30

学会不一样的Loading图

gif图比效果偏快 前言: 越来越多的应用,等待网络时使用闪烁的效果,那么这种效果,如何实现?...*maskLayer = [CAShapeLayer layer]; maskLayer.path = totalCoverablePath.CGPath; maskLayer.fillColor...也就是说遮罩层中有对象的地方就是“透明”的,可以看到被遮罩层中的对象,没有对象的地方就是不透明的,被遮罩层中相应位置的对象是看不见的。 它的原理是:上面一层是遮罩层,下面一层是被遮罩层。...假定遮罩层上是一个正圆,那么光线就会透过这个圆形,射到下面的被遮罩层上,只会显示一个圆形的图形。如果遮罩层上什么都没有,那么光线就无法透到下面来,那么下面的被遮罩层什么也显示不出来。...上述代码,得出如下效果: 上述效果,其实很多app就单纯这样使用了,但是我们为了更美化,决定为其增加动态效果 3、为渐变层增加动态效果 // 动画 animate CABasicAnimation

89840

从案例出发,由浅到深了解 iOS 动画

sonar(CACurrentMediaTime() + 1.84) } * * * 例子四:加载动画 [image] 这是 UIView 框架自带的动画,看起来不错,就是做了一个简单的缩放...self.dotThree.transform = CGAffineTransform.identity }, completion: nil) } * * * 例子五:下划线点击转移动画...这里动画效果的主要用到 strokeEnd 属性, 笔画结束 插值的时候,要注意,下一段动画的开始,正是上一段动画的结束 // 这个用来,主要的效果 let progressLayer = CAShapeLayer...return gradientLayer }() // 文字转图片,然后绘制到视图上 // 通过设置渐变图层的遮罩 `mask` , 为指定文字,来设置渐变闪烁的效果...一般这种动画,我们用 Lottie * * * 例子十:文本变换动画 [image] 这个动画有些复杂,重点使用了 CoreAnimation 的组动画,叠加了五种效果,缩放、尺寸、布局、位置与透明度。

71430

iOS动画-CAAnimation使用详解

,现实中的任何物体都会在运动中经历加速或者减速的过程,不是速度骤变;因此,CoreAnimation也内嵌了一系列标准的缓冲函数来使动画看起来更平滑自然,这就是我们要说到的动画缓冲。...屏幕上绘制曲线(此步骤对于动画不是必须的,只是为了动画看起来更直观); 3.创建用于显示飞机的视图,将其设置贝塞尔曲线的初始位置; 4.创建并执行关键帧动画,实现飞机飞行的曲线动画; - (void...九、委托模式下的动画区分 对于CAAnimation而言,使用委托模式不是一个完成块会带来一个问题,那就是设置多个动画时,无法回调方法中区分。...,然后回调用比较,但实际上并不起作用,因为委托传入的动画参数是原始值的一个深拷贝,从而不是同一个值。...度的动画; 可以使用相对值不是绝对值旋转,设置byValue不是toValue; 可以不用创建CATransform3D,而是使用一个简单的数值来指定角度; 不会和transform.position

2.2K10

iOS Core Animation:Advanced Techniques

第1篇:CAShapeLayer CAShapeLayer是一个通过矢量图形不是bitmap来绘制的图层子类。...如果修改代码让-hitTest:直接作用于colorLayer不是呈现图层,你会发现当图层移动的时候它并不能正确显示。...这时候你就需要点击图层将要移动到的位置不是图层本身来响应点击(这就是为什么用呈现图层来响应交互的原因)。...Core Animation使用缓冲来使动画移动更平滑更自然,不是看起来的那种机械和人工,在这一章我们将要研究如何对你的动画控制和自定义缓冲曲线。...在这个例子中,我们自始至终想使用同一个缓冲函数,但我们同样需要一个函数的数组来告诉动画不停重复每个步骤,不是整个动画序列只做一次缓冲,我们简单使用包含多个相同函数拷贝的数组就可以了。

1.8K30

iOS动画系列之五:基础动画之缩放篇&旋转篇Swift+OC1. 思路和最终成果2. 抽取公共方法3. 懒加载Layer4. 添加动画

这一篇主要介绍基础动画之缩放和旋转。这些基本操作分享完之后,我想想可以找个稍微复杂一点点的动画做做啦。 这篇继续基础篇,分享一下缩放和旋转。...使用extension区分代码 静态截取图:是不是很清晰? ?...是不是懒到家了? 关于keyPath的字段有啥作用,可以看看第三篇:iOS动画系列之三:Core Animation。介绍了Core Animation的常用属性和方法。...懒加载Layer 懒加载的目的是为了View实例化的时候不进行创建,用的时候才进行创建。这样可以一定程度上提高效率。...第八篇:iOS动画系列之八:使用CAShapeLayer绘画动态流量图 第九篇:iOS动画系列之九:实现点赞的动画及播放起伏指示器 第十篇:实战系列:绘制过山车场景

2.3K10

iOS开发UI篇--iOS动画(Core Animation)总结

这种自动化的图形加速技术让动画拥有更高的帧率并且显示效果更加平滑,不会加重CPU的负担影响程序的运行速度。...效果演示: 位移动画代码演示: //使用CABasicAnimation创建基础动画 CABasicAnimation *anima = [CABasicAnimation animationWithKeyPath...(位移动画、旋转动画、组动画) 3、点击黑色小按钮,其他按钮消失,被点击的黑色按钮变大变淡消失。(缩放动画、alpha动画、组动画) 小编的话:代码过多,这里不做演示。文章最后提供代码下载地址。...4.5.2: 仿钉钉菜单效果 效果演示: 看上去挺炫的,其实实现很简单,就是位移动画+缩放动画。 4.5.3: 点赞烟花效果动画 效果演示: 这里其实只有按钮变大效果使用的缩放动画。...动画其实也不是那么难。 六、下载地址 推广一个我的iOS交流平台:624212887,群文件自行下载,不管你是小白还是大牛热烈欢迎进群 ,分享面试经验,讨论技术, 大家一起交流学习成长!

1.6K00

iOS学习——核心动画

它有一个削弱的效果,应用的场景比如一扇门慢慢地关上,不是一声。 kCAMediaTimingFunctionEaseInEaseOut:动画在开始和结束时速度较慢,中间时间段内速度较快。...fillMode主要有四种类型: kCAFillModeForwards :动画开始之后layer的状态将保持动画的最后一帧,removedOnCompletion的默认属性值是 YES,所以为了使动画结束之后.../* CABasicAnimation应用 心跳效果 思路:就是让一张图片做一个放大缩放小的动画. */ //代码实现: - (void) viewDidLoad...{ CABasicAnimation *anim =[CABasicAnimation animation]; //设置缩放属性 anim.keyPath = @"transform.scale...的重要属性: type:过渡动画的类型 //转场类型,字符串类型参数.系统提供了四中动画形式: //kCATransitionFade//淡出效果//kCATransitionMoveIn//新视图移动到旧视图上

1.2K50

实践-小效果 III

饼状图.gif 大家都知道这是通过 CAShapeLayerCABasicAnimation 结合起来实现的,可是其中还是有需要注意的地方,实现的步骤大致如下: 绘制一个 CAShapeLayer...不用指定大小,_pieLayer = [CAShapeLayer layer]; 绘制三个 彩色的扇形CAShapeLayer 并加载 _pieLayer 上。...绘制一个 遮盖住 这三个 CAShapeLayerCAShapeLayer 并赋值给 _pieLayer.mask ,我们都知道 maskLayer的颜色是不会印象视图的显示的,视图的显示只跟maskLayer..._pieLayer.mask 添加 CABasicAnimation 动画,使 _pieLayer.mask 动画绘制,就达到了 _pieLayer 的动态绘制,其实是无法对 _pieLayer 动态绘制...UIEdgeInsetsMake(Scale_Y(5), Scale_X(7), Scale_Y(7), Scale_X(7))]; 不过值得一提的是 使用 SDWebImage为UIButtont添加的是 内容Image,不是

1.1K20
领券