• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >swift > Swift语言实现地图坐标弹跳动画

Swift语言实现地图坐标弹跳动画

作者:迷思的猫 字体:[增加 减小] 来源:互联网 时间:2017-05-28

迷思的猫 通过本文主要向大家介绍了swift语言,swift语言教程,swift语言下载,swift语言开发工具,swift语言实战入门等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

下面应用Swift语言做地图坐标实现弹簧跳动的效果,具体实现方法如下所示:

iOS动画大概分这几种:

CoreAnimation动画(基础)UIView动画(animateWithDuration开头的函数,带弹簧特效)UIDynamic动画(有物理引擎)

上次写弹跳动画,由于刚开始学,就用了最基础的CA动画,但是因为自己不会写KeyFrame,所以还引用了一个开源库来实现下坠的弹跳效果,这样固然是实现了需求,但是一点都不优雅——从iOS7开始,有了2、3两种动画,就不再需要用老的CA动画去一点一点拔了。做这个动画的正确姿势,应该是下面这样~

我们的需求仍然是这个弹跳的marker:

这次我用了2、3两种方式实现,效果如下:

一、UIView动画

之前使用CABasicAnimation实现,不仅代码多,还要用CATransaction控制回来的一趟callback。其实直接用iOS7的UIView动画就搞定了:

UIView.animateWithDuration(0.2, 
animations: 
{ self.marker.layer.position.y -= 30 },
completion: {(finished) in UIView.animateWithDuration(0.5, delay: 0,
usingSpringWithDamping: 0.2,
initialSpringVelocity: 5.0,
options: UIViewAnimationOptions.CurveEaseOut,
animations: {//弹性参数的调教,可以参见本文的“参考”部分 
self.marker.layer.position.y += 30 }, 
completion: nil)})
</div>

在上升过程中,直接在0.2s的时间中,向上移动30px;向下过程中,为了表示弹跳的效果,使用了Spring系列参数,做了一下调整之后,感觉效果还是挺有意思的。但是单纯使用这个有一个缺点:我们要的是类似于重力下坠,而非像一根弹簧一样弹到那个位置。注意那跟蓝色的比较线,我们实现的是左边的效果,在动画过程中,它会超过那根蓝色线条,所以其实是不符合需求的。

二、UIDynamic动画

UIDynamic动画是有物理引擎的动画,我们只需要设定这个“物体”的物理特性,iOS就会自动帮我们进行物理世界的动画运算。首先我们创建它的物理特性:

var animator : UIDynamicAnimator?override func viewDidLoad() { 
super.viewDidLoad() 
animator = UIDynamicAnimator(referenceView: view)}
override func viewDidAppear(animated: Bool) { 
let gravity = UIGravityBehavior(items: [marker2])//重力 
let elastic = UIDynamicItemBehavior(items: [marker2])//弹性 
elastic.elasticity = 0.6 let collision = UICollisionBehavior(items: [marker2])//边缘 
let endY = marker2.frame.origin.y + marker2.frame.height//
记录marker2的底部坐标 
collision.addBoundaryWithIdentifier("floor", fromPoint: CGPoint(x: 0, y: endY),
toPoint: CGPoint(x: UIScreen.mainScreen().bounds.width, y: endY))//在marker2的底部画一条线,从屏幕左边到屏幕右边 
animator!.addBehavior(collision) 
animator!.addBehavior(gravity) 
animator!.addBehavior(elastic)}
</div>


首先我们创建一个animator,然后创建关于marker2的重力、弹性、边缘三个属性,附加在animator上。于是这个marker2便有了物理特性。然后我们和以前一样把它抬高:

UIView.animateWithDuration(0.2, 
animations: { 
self.marker2.layer.position.y -= 30 }, 
completion: {(finished : Bool) in 
self.animator!.updateItemUsingCurrentState(self.marker2)//如果不update,则animator不知道它的位置被移动过了})
</div>

在动画完成后,让animator重新对它进行活动,就达到了文章开始的gif图中,第二个marker的弹跳效果。

文章到此为止,希望对大家有所帮助,谢谢。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Swift 教程
  • Swift 环境搭建
  • Swift中闭包实战案例详解
  • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
  • Swift语言中的一些访问控制设置详解
  • 深入解析Swift语言中的协议
  • 深入解析Swift语言编程中的可选链
  • 解析Swift语言面相对象编程中的继承特性
  • 详解Swift语言中的类与结构体
  • 详解Swift语言的while循环结构

相关文章

  • 2017-05-28MySQL+SSM+Ajax上传图片问题
  • 2017-05-22Swift 可选(Optionals)类型
  • 2017-05-28Swift编程中的初始化与反初始化完全讲解
  • 2017-05-28Swift编程中实现希尔排序算法的代码实例
  • 2017-05-28Swift3.0 GCD定时器的使用DEMO
  • 2017-05-28Swift实现快速排序算法的代码示例
  • 2017-05-28Swift心得笔记之控制流
  • 2017-05-28简单了解Swift语言中的break和continue语句的用法
  • 2017-05-22Swift 访问控制
  • 2017-05-28Swift编程之枚举类型详解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Swift中的条件切换语句switch...case学习教程
    • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程
    • MySQL+SSM+Ajax上传图片问题
    • Swift 3.0基础学习之枚举类型
    • 在一个项目中同时使用Swift和Objective-C代码混合编程的方法
    • Eclipse智能提示及快捷键
    • Swift中使用可选类型完美解决占位问题
    • 使用Swift实现iOScollectionView广告无限滚动效果(DEMO)
    • Swift教程之方法详解
    • MyBatis中SqlSession实现增删改查案例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有