您的位置:首页 > 移动开发 > Swift

swift UIImageView简单动画

2015-11-09 13:32 513 查看
UIImageView 如果要实现类似于grf的动画图 我们可以直接使用两中方式实现

方法一,设置动态图片

首先,我们需要一组实现动画的图片,按照顺序命名



如图所示 test

我们可以创建UIImage

[objc] view
plaincopy

let img1=UIImage.animatedImageNamed("test", duration: 2.0)  

然后将图片直接赋值给UIImageView即可

完成代码如下

[objc] view
plaincopy

//使用img来实现动画  

let img1=UIImage.animatedImageNamed("test", duration: 2.0)  

let imgV3=UIImageView(image: img1)  

imgV3.frame=CGRectMake(20, 500, 100, 100)  

self.view .addSubview(imgV3)  

执行看效果

方法二,通过数组图片赋值

这里我们稍微做复杂一点可以控制图片动画的开始结束

首先创建一个button用于控制动画

[objc] view
plaincopy

//创建button  

let btn=UIButton.buttonWithType(UIButtonType.System) as!UIButton  

btn.frame=CGRectMake(20, 55, 120, 36)  

btn.setTitle("开始/结束", forState: UIControlState.Normal)  

btn.addTarget(self, action: "change", forControlEvents: UIControlEvents.TouchDown)  

self.view.addSubview(btn)  

接下来我们创建UIImageView 

[objc] view
plaincopy

//创建UIImageView  

let imgV=UIImageView(frame: CGRectMake(20, 100, 100, 100))  

imgV.animationDuration=2.0  

imgV.tag=99  

然后创建图片数组用于动画

[objc] view
plaincopy

//创建图片  

var images=[UIImage]()  

for i in 0...2{  

    let img=UIImage(named: "test\(i)")  

    images.append(img!)  

}  

设置UIImageView

[objc] view
plaincopy

//设置UIImageView的image  

imgV.animationImages=images  

//设置循环次数,0无限循环  

imgV.animationRepeatCount=0  

imgV.startAnimating()  

self.view.addSubview(imgV)  

接下来我们实现刚才button的点击方法,控制动画开始结束

[objc] view
plaincopy

func change(){  

    let imgV=self.view.viewWithTag(99) as! UIImageView  

    if imgV.isAnimating(){  

        imgV.stopAnimating()  

    }else{  

        imgV.startAnimating()  

    }  

}  

好了。运行试一下效果

大家有没有发现一个问题,那就是点击结束动画之后整个UIImageView都不显示了

这是因为我们只设置了UIImageView的 animationImages 

而没有设置image的原因

我们修改一下代码即可

完整代码

[objc] view
plaincopy

override func viewDidLoad() {  

    super.viewDidLoad()  

  

    //UIImageView 一些简单动画  

      

    //使用img来实现动画  

    let img1=UIImage.animatedImageNamed("test", duration: 2.0)  

    let imgV3=UIImageView(image: img1)  

    imgV3.frame=CGRectMake(20, 500, 100, 100)  

    self.view .addSubview(imgV3)  

      

      

      

    //创建button  

    let btn=UIButton.buttonWithType(UIButtonType.System) as!UIButton  

    btn.frame=CGRectMake(20, 55, 120, 36)  

    btn.setTitle("开始/结束", forState: UIControlState.Normal)  

    btn.addTarget(self, action: "change", forControlEvents: UIControlEvents.TouchDown)  

    self.view.addSubview(btn)  

      

    //创建UIImageView  

    let imgV=UIImageView(frame: CGRectMake(20, 100, 100, 100))  

    imgV.animationDuration=2.0  

    imgV.tag=99  

      

      

    //创建图片  

    var images=[UIImage]()  

    for i in 0...2{  

        let img=UIImage(named: "test\(i)")  

        images.append(img!)  

    }  

      

    //设置UIImageView的image  

    imgV.animationImages=images  

    //以上方法中设置了animationImages  我们会发现当停止动画的时候imgV上边直接没有图片了,如果需要点停止动画之后还能现实图片。我们需要设置图片  

    imgV.image=UIImage(named: "test2.png")  

    //设置循环次数,0无限循环  

    imgV.animationRepeatCount=0  

    imgV.startAnimating()  

    self.view.addSubview(imgV)  

      

      

      

      

      

      

      

}  

func change(){  

    let imgV=self.view.viewWithTag(99) as! UIImageView  

    if imgV.isAnimating(){  

        imgV.stopAnimating()  

    }else{  

        imgV.startAnimating()  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: