UIImageView 如果要实现类似于grf的动画图 我们可以直接使用两中方式实现
方法一,设置动态图片
首先,我们需要一组实现动画的图片,按照顺序命名
如图所示 test
我们可以创建UIImage
- let img1=UIImage.animatedImageNamed("test", duration: 2.0)
然后将图片直接赋值给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用于控制动画
- //创建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
- //创建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
- //设置UIImageView的image
- imgV.animationImages=images
- //设置循环次数,0无限循环
- imgV.animationRepeatCount=0
- imgV.startAnimating()
- self.view.addSubview(imgV)
接下来我们实现刚才button的点击方法,控制动画开始结束
- func change(){
- let imgV=self.view.viewWithTag(99) as! UIImageView
- if imgV.isAnimating(){
- imgV.stopAnimating()
- }else{
- imgV.startAnimating()
- }
- }
好了。运行试一下效果
大家有没有发现一个问题,那就是点击结束动画之后整个UIImageView都不显示了
这是因为我们只设置了UIImageView的 animationImages
而没有设置image的原因
我们修改一下代码即可
完整代码
- 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()
- }
- }