标题党果然吸流量
现在穷,自打夏商周开始,祖辈应该都是穷人 ,自打夏商周开始,祖辈就没有一个买过车的 ---这句如果没责任就是我扯的
<br />
文文笔戳的一B。文字生硬。xx 死的早。,体育老师也相继。。。,语文自学
Paste_Image.png
Paste_Image.png
以上讲解通通都没有
Paste_Image.png
来吧。拥抱iOS 四大core Animation 之一 CABasicAnimation
先上demo
CABaseAnimation.gif
iOS中实现一个动画可以很简单,在view层面上有封装的方法
UIView.animateWithDuration(<#T##duration: NSTimeInterval##NSTimeInterval#>, animations: <#T##() -> Void#>)
但是它不能控制动画的暂停和组合,所以就需要用到CoreAnimation了。
iOS中的动画主要分为:
基础动画(CABasicAnimation)
关键帧动画(CAKeyFrameAnimation)
动画组(CAAnimationGroup)
转场动画(CATransition)
打字好累。上代码和github 链接,完事也是该买包泡面吃了。犒赏自己了!
//// LessonTest.swift//// Created by liujunbin on 16/8/12.// Copyright © 2016年 liujiacuncunzhang. All rights reserved.//import UIKit class LKFLessonTest: UIViewController { //关键字懒加载lazy 。里面调用class的方法需要前面加self,不然会报错,干货不谢。这里布局不用VFL 写了。就1个uivew 而已。 lazy var box : UIView = { let v = UIView(frame: CGRect(x: 100, y: 100, width: 30, height: 30)) v.backgroundColor = self.randowColor() return v }() override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.gray_light() self.view.addSubview(box)// /动画不会真正改变opacity的值,在动画结束后要手动更改// CABasicAnimation// CAKeyframeAnimation// CAAnimationGroup// CATransition// CAAnimation}//改变动画为随机的颜色func changColor(vw : CALayer){ let c = randowColor().CGColor let ca = CABasicAnimation(keyPath: "backgroundColor") ca.toValue = c ca.duration = 1 ca.delegate = self ca.setValue(c, forKey: "endcolor") vw.addAnimation(ca, forKey: "backgroundColor") }//鼠标到哪里。uivew 更到哪里func positionLayer(vw : CALayer , p : CGPoint){ let ca = CABasicAnimation(keyPath: "position") ca.duration = 1 ca.toValue = NSValue(CGPoint: p) ca.delegate = self ca.setValue(NSValue(CGPoint: p), forKey: "endPosition") vw.addAnimation(ca, forKey: "position") }//旋转func rotate(vw:CALayer){ let ca = CABasicAnimation(keyPath: "transform.rotation.z") ca.toValue = NSNumber(float: Float(M_PI) * 3) ca.duration = 1 vw.addAnimation(ca, forKey: "transform.rotation.z") }//动画停止的代理。当然还有其他的 forexample animationDidStartoverride func animationDidStop(anim: CAAnimation, finished flag: Bool) { print("animationDidStop \\\\\\\\(flag)") self.box.layer.opacity = 1 if let a = anim.valueForKey("endPosition") { self.box.layer.position = (a as? NSValue)?.CGPointValue() ?? CGPointZero } print(anim.valueForKey("endcolor")) if let c = anim.valueForKey("endcolor") { self.box.layer.backgroundColor = c as! CGColor } }//随机个颜色func randowColor() -> UIColor{ let r = CGFloat(arc4random() % 256) let g = CGFloat(arc4random() % 256) let b = CGFloat(arc4random() % 256) return UIColor(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: 1) }//重写捕获的touchesBegan 。 手指按下的那一刻override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { print("touchesBegan 开始动画") if let p = touches.first { let cp = p.locationInView(self.view) positionLayer(self.box.layer, p: cp) rotate(self.box.layer) changColor(self.box.layer) } } }
按照惯例。文章稿纸的地址详见
https://github.com/976500133/IOS-Dev-With-Swift/tree/master/learn053
作者:二月长河
链接:https://www.jianshu.com/p/07843cf28b13
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦