加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift基础之UIAnimation 动画(手势操作)

发布时间:2020-12-14 06:54:14 所属栏目:百科 来源:网络整理
导读:import UIKitclass ViewController: UIViewController { @IBOutlet weak var penguinView: UIImageView! var frames: NSArray? var dieCenter: CGPoint? override func viewDidLoad() { super.viewDidLoad() let image1 = UIImage(named:"penguin_walk01")!
import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var penguinView: UIImageView!
    
    var frames: NSArray?
    var dieCenter: CGPoint?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        let image1 = UIImage(named:"penguin_walk01")!
        let image2 = UIImage(named:"penguin_walk02")!
        let image3 = UIImage(named:"penguin_walk03")!
        let image4 = UIImage(named:"penguin_walk04")!
        
        let frames: [UIImage] = [image1,image2,image3,image4]
        
        penguinView.animationDuration = 0.15;
        penguinView.animationRepeatCount = 2;
        penguinView.animationImages = frames;
        
        //walk right
        let swipeGestureRight = UISwipeGestureRecognizer(target: self,action: #selector(ViewController.walkRight(_:)))
        swipeGestureRight.direction = UISwipeGestureRecognizerDirection.Right
        view.addGestureRecognizer(swipeGestureRight)
        
        //walk left
        let swipeGestureLeft = UISwipeGestureRecognizer(target: self,action: #selector(ViewController.walkLeft(_:)))
        swipeGestureLeft.direction = UISwipeGestureRecognizerDirection.Left
        view.addGestureRecognizer(swipeGestureLeft)
        
        //jump
        let tap = UITapGestureRecognizer(target: self,action: #selector(ViewController.jump(_:)))
        view.addGestureRecognizer(tap)
        
        //longPress
        let longPress = UILongPressGestureRecognizer(target: self,action: #selector(ViewController.longPress(_:)))
        view.addGestureRecognizer(longPress)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

func walkLeft(send: UIGestureRecognizer) {
    print("walk left");
    //CHECK IF OUT OF SCREEN
    if (penguinView.center.x < 0.0) {
        penguinView.center = CGPointMake(view.frame.size.width,penguinView.center.y);
    }
    
    //FLIP AROUND FOR WALKING LEFT
    self.penguinView.transform = CGAffineTransformMakeScale(-1.0,1.0);
    
    //START WALK ANIMATION
    penguinView.startAnimating()
    
    //MOVE THE IMAGE VIEW TO LEFT
    UIView.animateWithDuration(0.6,animations: { () -> Void in
        self.penguinView.center = CGPointMake(self.penguinView.center.x - 30,self.penguinView.center.y);
    })
}

func walkRight(send: UIGestureRecognizer) {
    print("walk right");
    if (self.penguinView.center.x > self.view.frame.size.width) {
        self.penguinView.center = CGPointMake(0,self.penguinView.center.y);
    }
            
    self.penguinView.transform = CGAffineTransformIdentity;
    penguinView.startAnimating()
    UIView.animateWithDuration(0.6,animations: { () -> Void in
        self.penguinView.center = CGPointMake(self.penguinView.center.x + 30,self.penguinView.center.y)
    })
}

func jump(send: UIGestureRecognizer) {
    penguinView.startAnimating()
    
    UIView.animateWithDuration(0.25,animations: { () -> Void in
        self.penguinView.center = CGPointMake(self.penguinView.center.x,self.penguinView.center.y - 50)
    },completion: { (finished: Bool) -> Void in
        self.jumpBack()
    })
}
    
func jumpBack() {
    UIView.animateWithDuration(0.25,animations: { () -> Void in
    self.penguinView.center = CGPointMake(self.penguinView.center.x,self.penguinView.center.y + 50)
    })
}

func longPress(send: UIGestureRecognizer) {
    UIView.animateWithDuration(0.33,animations: { () -> Void in
        self.dieCenter = self.penguinView.center
        self.penguinView.center = CGPointMake(self.penguinView.center.x,self.view.frame.size.height)
    },completion: { (finished: Bool) -> Void in
         self.longPressBack()
    })
}

func longPressBack() {
    UIView.animateWithDuration(0.25,animations: { () -> Void in
        self.penguinView.center = self.dieCenter!
    })
}

}


要准备四张图片



运行结果界面

当点击时会跳跃,当向右滑动会向右走,左划想左走

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读