在 UITableViewCell 中插入 UIWebView 以播放动画 GIF
Inserting a UIWebView within a UITableViewCell for playing animated GIFs
我正在制作一个 table 视图,我想在其中包含动画 gif。所以我正在尝试使用 UIWebView
。连接数据上的 IBOutlet
是:
@IBOutlet weak var infoLabel: UILabel!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var webView: UIWebView!
在 table 视图控制器内:
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
}
productNames
和 productImages
变量是数组,其中指定了图像和标题。是否有可以分配给 UIWebView
的等效类型(因此我可以设置一个数组来为单元格提供动画 GIF)?
如果您正在尝试播放 Gif 动画,何不试试 Flipboard 的 iOS 动画图像组件。
FLAnimatedImage is a performant animated GIF engine for iOS:
Plays multiple GIFs simultaneously with a playback speed comparable to
desktop browsers
Honors variable frame delays
Behaves
gracefully under memory pressure
Eliminates delays or blocking
during the first playback loop
Interprets the frame delays of
fast GIFs the same way modern browsers do
我不知道如何使用 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。
我正在制作一个 table 视图,我想在其中包含动画 gif。所以我正在尝试使用 UIWebView
。连接数据上的 IBOutlet
是:
@IBOutlet weak var infoLabel: UILabel!
@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var webView: UIWebView!
在 table 视图控制器内:
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
}
productNames
和 productImages
变量是数组,其中指定了图像和标题。是否有可以分配给 UIWebView
的等效类型(因此我可以设置一个数组来为单元格提供动画 GIF)?
如果您正在尝试播放 Gif 动画,何不试试 Flipboard 的 iOS 动画图像组件。
FLAnimatedImage is a performant animated GIF engine for iOS:
Plays multiple GIFs simultaneously with a playback speed comparable to desktop browsers
Honors variable frame delays
Behaves gracefully under memory pressure
Eliminates delays or blocking during the first playback loop
Interprets the frame delays of fast GIFs the same way modern browsers do
我不知道如何使用 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。