【问题标题】:Animate images in uiimageview在 uiimageview 中为图像设置动画
【发布时间】:2013-06-24 11:18:25
【问题描述】:

如何为来自网络服务的图像设置动画。我得到了为 bundle 中的图像设置动画的代码。如何从 url 中加载图像一个数组

该代码附在下面

UIImageView* animatedImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
animatedImageView.animationImages = [NSArray arrayWithObjects:    
                               [UIImage imageNamed:@"image1.gif"],
                               [UIImage imageNamed:@"image2.gif"],
                               [UIImage imageNamed:@"image3.gif"],
                               [UIImage imageNamed:@"image4.gif"], nil];
animatedImageView.animationDuration = 1.0f;
animatedImageView.animationRepeatCount = 0;
[animatedImageView startAnimating];
[self.view addSubview: animatedImageView];

【问题讨论】:

  • 下载图片,创建数组并设置animationImages,这里有什么问题?
  • 有什么问题吗?看来代码不错
  • 而问题是……
  • 误导性和错误的标记,错误的标题 - 已标记。

标签: ios objective-c animation uiimageview


【解决方案1】:

从网络服务下载图片:

NSData *imageData = [NSData dataWithContentsOfURL:"*Url from web service*"];
UIImage *imageOne = [UIImage imageWithData:imageData];

可能从网络服务下载所有图像并创建一个数组,如:

NSArray *imagesArray = [NSArray arrayWithObjects:imageOne...........,nil];

只需稍加修改即可使用:

UIImageView* animatedImageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
animatedImageView.animationImages = imagesArray;
animatedImageView.animationDuration = 1.0f;
animatedImageView.animationRepeatCount = 0;
[animatedImageView startAnimating];
[self.view addSubview: animatedImageView];

【讨论】:

  • 附注:确保下载不是在主线程上执行的。
  • 没有问题。但是下载需要时间。您必须耐心等待图像下载完毕
  • 是否可以用类似的方式改变uibutton的背景图片
  • 请把你的问题问清楚,你想点击按钮后或直接更改
  • 仅供参考,但如果使用这种方法图像太大,您的代码会使设备崩溃。保存所有解码的图像数据是内存不是一个好主意,做更多的研究来找出如何解决这个问题。
【解决方案2】:

获得了完美的动画代码 可以在swift4的image view中自动更换图片

class ViewController: UIViewController {

var imgarray = [UIImage(named:"f1.png")!, 
                UIImage(named:"f2.png")!, 
                UIImage(named:"f3.png")!,  
                UIImage(named:"f4.png")!,
                UIImage(named:"f5.png")!, 
                UIImage(named:"index1.png")!,
                UIImage(named:"index2.png")!, 
                UIImage(named:"index3.png")!]

@IBOutlet weak var imgview: UIImageView!
override func viewDidLoad() {
    super.viewDidLoad()

    self.imgview.animationImages = imgarray
    self.imgview.animationDuration = 10.0
    self.imgview.animationRepeatCount = 0
    self.imgview.startAnimating()
    }
}

【讨论】:

  • 没有什么是答案在视图控件中自动更改图像视图中的图像。
【解决方案3】:

斯威夫特

假设 imageView 是通过 storyboard 添加的

初始化数组:

self.imageArray = [UIImage(named:"Download_060.png")!,UIImage(named:"Download_061.png")!,UIImage(named:"Download_062.png")!,
                       UIImage(named:"Download_063.png")!,UIImage(named:"Download_064.png")!,UIImage(named:"Download_065.png")!,
                       UIImage(named:"Download_066.png")!,UIImage(named:"Download_067.png")!]

添加代码以在按钮操作上或根据需要制作动画

 self.imgView.animationImages = self.imageArray
        self.imgView.animationDuration = 1.0
        self.imgView.animationRepeatCount = 0
        self.imgView.startAnimating()

停止动画

self.imgView.animationRepeatCount = 1 // IF Require once set this 1, 0 == infinite 

self.imgView.stopAnimating()

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2017-12-10
    • 2011-06-13
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多