目标效果: 点击动画按钮之后每张牌各自旋转 散开到屏幕上半部分的任意位置之后回到初始位置 比较像LOL男刀的技能动画 : )

1: 创建卡牌对象

for _ in 0...49 {let cardSet = UIImageView(image: UIImage(named: "cardBackLandscape"))self.view.addSubview(cardSet)cardSet.frame = self.landscapeCardBack.frameself.cardSetList.append(cardSet)}NSNotificationCenter.defaultCenter().postNotificationName("setCreated", object: nil)

把每个卡牌作为UIImageView创建出来,为了之后对这些牌进行操作 我用数组把他们持有住 在同一位置创建好了之后 使用本地通知发送setCreated消息 告诉这个页面的观察者card set已经创建完毕 可以开始执行第二步动画

2: 首先需要把开始动画的按钮的用户交互关闭,如果开着的话连续点击每次都会创建50张牌,导致程序卡顿甚至挂掉

这里的delayTime是给线程加一个延迟时间 只是为了让动画不很生硬

每次循环给对应下标的card对象添加旋转动画,并且改变它的原点,我在用UIView动画实现这套动画之前想过给每张牌添加贝塞尔曲线,那样的话确实可控性更高,但是由于时间关系我还是只用了UIViewAnimation,给card添加的旋转动画是使用POP动画库实现的,这里使用的是Basic动画.这一步结束之后会把每张牌旋转并散开到不同的位置,在delayTime结束并触发本地通知发送shuffleFinished的时候,这个页面的观察者会执行下一部动画 也就是把每张牌还原到动画起点

func shuffleTheSet() {self.shuffleButton.userInteractionEnabled = falselet delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(0.5 * Double(NSEC_PER_SEC)))dispatch_after(delayTime, dispatch_get_main_queue()) {NSNotificationCenter.defaultCenter().postNotificationName("shuffleFinished", object: nil)}for count in 0...49 {UIView.animateWithDuration(0.3, animations: {let cardRotateAnimation = POPBasicAnimation(propertyNamed: kPOPLayerRotation)cardRotateAnimation.fromValue = 0cardRotateAnimation.toValue = CGFloat(M_PI * 2.0)cardRotateAnimation.duration = 1//                cardRotateAnimation.duration = Double(count>5 ? count/2 : count/10)cardRotateAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)self.cardSetList[count].layer.pop_addAnimation(cardRotateAnimation, forKey: "cardRotation")self.cardSetList[count].frame.origin = CGPointMake(CGFloat(arc4random()) % (250 - 0 + 1) + 0, CGFloat(arc4random()) % (300 - 74 + 1) + 74)self.view.layoutIfNeeded()self.landscapeCardBack.removeFromSuperview()})}}

3: 把每张牌的还原到初始位置,并把button的title设置为切牌状态.

for count in 0...49 {UIView.animateWithDuration(0.3, animations: {self.cardSetList[count].center = self.landscapeCardBack.center})self.view.layoutIfNeeded()}self.shuffleButton.userInteractionEnabled = trueself.shuffleButton.setTitle("Cut Card", forState: .Normal)

牌洗完之后的需求是切牌,由于时间原因下周继续更新后续动画效果…

Swift实现洗牌动画效果相关推荐

  1. 图片动画效果html5,8个实用炫酷的HTML5图片动画应用

    原标题:8个实用炫酷的HTML5图片动画应用 近期我们发布了不少关于HTML5和jQuery的图片动画应用,很多都比较实用,也有一些效果非常炫酷,比如一些HTML5 3D图片动画特效.本文精选了8个实 ...

  2. 关于洗牌的研究(六)——从数学到魔术之完美洗牌

    爱学习,勤思考:学数学,玩魔术.欢迎点击头部蓝字关注MatheMagician,这里有你要的奇迹! 写再前面:本系列作品由MathMagician独家首发,一共有七篇,从数学和魔术两个角度对日常生活中 ...

  3. [Swift通天遁地]五、高级扩展-(11)图像加载Loading动画效果的自定义和缓存

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  4. Swift教程_零基础学习Swift完整实例(八)_swift完整实例(添加View的动画效果、添加View的阴影)...

    6.添加View的动画效果 本章节主要来做明细页面点击后翻转的动画效果,该效果可以进行多种改变,以达到想要的效果. 1.首先我们需要进行翻转的正反两个view,前面我们已经做好了,分别是PKOElem ...

  5. Swift - 一个纯代码实现的登录界面(带猫头鹰动画效果)

    这个是一个可爱的登录框页面,动画效果仿自国外网站readme.io.在GitHub上有人写了个objective-C版本,这里我翻译成Swift版的分享给大家. 效果图如下: (1)当输入用户名时,猫 ...

  6. Css动画效果旋转卡牌

    这次我们来实现一个用css动画效果敲打出来一个旋转卡牌的小案列. 首先把img图片框架敲打出来,给它一个div标签,里面包裹六个img标签. 放进去图片之后,然后给图片设置一下css样式. 设置tra ...

  7. Swift-贝赛尔曲线画扇形、弧线、圆形、多边形——UIBezierPath实现App下载时的动画效果

    上篇文章提到了使用贝赛尔曲线实现画图板(传送门),顿时就对贝赛尔曲线兴趣大增有木有. 之所以接触贝赛尔曲线,多亏了师父.周五下班前师父给我留了个任务,让我周末回家研究研究 iPhone 手机下载 Ap ...

  8. PWA将带来新一轮大前端技术洗牌?

    作者 | 彭星 编辑 | 尾尾 一.回顾历史:移动时代之初,Web遭遇两大枷锁 Web 在移动时代遭遇两大枷锁1.Web 在移动时代遭遇两大枷锁 当 Web 自信满满,步入移动时代之时,它还没有做好充 ...

  9. 【小程序动画合集】10种小程序动画效果实现方法,文章太长建议收藏!

    前言 一提小程序与动画,首先想到的是什么?嗯,微信小程序独创了一套动画玩法,官方支持3种动画方案,分别是 createAnimation . this.animate 和 CSS3动画 . 1. cr ...

最新文章

  1. iOS 消息的传递机制
  2. 中object转为list集合_java基础集合小结
  3. 从字符串 const str = ‘qwbewrbbeqqbbbweebbbbqee‘;中能得到结果 [“b“, “bb“, “bbb“, “bbbb“] 以下错误语句是?
  4. android iOS 都精通,Android IOS开发要理解何为面向对象的思维
  5. Win7旗舰版禁止修改文件属性的设置方法
  6. 红橙Darren视频笔记 一个控件显示两种颜色的文字 画笔的使用
  7. 关于php的ifelse说法,PHP,否则elseif
  8. 智能一代云平台(二十九):通用mapper的改造
  9. 怎么把外部参照合并到图纸_怎么对两个图纸内容进行合并操作
  10. Android Studio的build.gradle里面的各种版本信息
  11. 《计算机组成原理(微课版)》第1章课后习题答案
  12. 中国银行app,H5页面调取支付,并返回状态码。
  13. Exp3 免杀原理与实践 20164302 王一帆
  14. 用matlab画出ex,如何用matlab画函数图形
  15. et文件怎么转成excel_excel怎么转换成word格式的文件格式?这些方法应该掌握!...
  16. 各位观众老爷不如点进来随便评论几句QUQ
  17. win7java浏览器崩溃_win7系统浏览器页面一直崩溃的修复方法
  18. 《Unity 游戏设计与实现 南梦宫一线程序员的开发实例》学习笔记01
  19. 给模型加入成交量控制
  20. java工程积累——项目管理:破窗理论

热门文章

  1. 深度学习中的深度前馈网络简介
  2. 名悦集团分享那些省钱又简单的汽车保养妙招
  3. 嵌入式实时操作系统7——任务优先级表
  4. Jenkins自动构建(CI/DI)项目(一)
  5. siri打电话功能测试用例编写
  6. linux视频日记软件下载,Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
  7. 四阶行列式计算python_四阶行列式的计算题?
  8. Axure的动态面板制作tab切换效果
  9. 我遇到的一些问题(空指针异常、jsp页面传值)
  10. Web---HTML标签总结