在UITableViewCell中插入UIWebView以播放动画GIF

时间:2015-01-09 13:09:40

标签: ios uitableview swift uiwebview

我正在制作一个表格视图,我想要包含GIF动画。所以我试图使用UIWebView。连接数据上的IBOutlet为:

@IBOutlet weak var infoLabel: UILabel!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var webView: UIWebView!

在表视图控制器中:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    let cellIdentifier = "Cell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as TableViewCell


    cell.infoLabel.text = productNames[indexPath.row]
    cell.imageView.image = UIImage(named: productImages[indexPath.row])


    return cell
}

productNamesproductImages变量是数组,其中指定了图像和标题。是否有可以分配UIWebView的等效类型(因此我可以设置一个数组来为单元格提供动画GIF)?

2 个答案:

答案 0 :(得分:1)

如果您正在尝试播放动画Gif,为什么不尝试使用Flipboard的iOS动画图像组件。

  

FLAnimatedImage是适用于iOS的高性能动画GIF引擎:

     

同时播放多个GIF,播放速度可与之相媲美   桌面浏览器
荣誉可变帧延迟
表现   在记忆压力下优雅地消除延迟或阻塞   在第一个播放循环期间,解释帧延迟   快速GIF与现代浏览器的做法相同

https://github.com/Flipboard/FLAnimatedImage

答案 1 :(得分:0)

我无法弄清楚如何使用FLAnimatedImage(并且有时间限制包装这个项目)。基于我收到的关于我的原始想法如何过于资源密集的问题的两个回复,我决定朝着不同的方向前进。虽然我的所有图像都是动画GIF,但我决定使用UIImage.animationImages。

我将动画GIF中的帧转换为单独的PNG文件(Photoshop有一个脚本可以执行此操作)。设置各个PNG的数组,如:

var animationImages = [UIImage(named:"a1.png")!, UIImage(named:"a2.png")!, UIImage(named:"a3.png")!, UIImage(named:a4.png")!,UIImage(named:"a5.png")!]
var animationImages2 = [UIImage(named:"b1.png")!, UIImage(named:"b2.png")!, UIImage(named:"b3.png")!, UIImage(named:b4.png")!,UIImage(named:"b5.png")!]
var animationImages3 = [UIImage(named:"c1.png")!, UIImage(named:"c2.png")!, UIImage(named:"c3.png")!, UIImage(named:c4.png")!,UIImage(named:"c5.png")!] //etc.

在override func tableView中,指定行对象信息:

cell.imageView.animationImages = findArray(indexPath.row) //findArray() is the func that I set up to return the associated image animation array
cell.imageView.animationDuration = 3
cell.imageView.startAnimating() 

findArray():

func findArray(theRowNumber:Int) -> NSArray{
    switch theRowNumber{
    case 0:
        return imageAnimation
    case 1:
        return imageAnimation2
    case 2:
        return imageAnimation3 //etc.
    default:
        return imageAnimation
    }

可能不是实现这一目标的最有效方法,但它确实有效! :)凭借更多的Web(包括Flash)经验,我希望Apple能够在UIImage中支持动画GIF。