ios - ASNetworkImageNode gif 未加载
问题描述
我正在创建自定义节点以显示带有播放和暂停按钮的 gif 文件。以下是我的代码。
import Foundation
import AsyncDisplayKit
class GifNode: ASCellNode {
var gifImageNode:ASNetworkImageNode = {
let node = ASNetworkImageNode()
node.contentMode = .scaleAspectFit
node.shouldRenderProgressImages = true
return node
}()
var playImage: ASImageNode = {
let node = ASImageNode()
node.contentMode = .scaleAspectFit
node.style.height = ASDimensionMakeWithPoints(30)
node.style.height = ASDimensionMakeWithPoints(30)
node.backgroundColor = .gray
node.image = #imageLiteral(resourceName: "play")
return node
}()
init(model:GifContent)
{
super.init()
self.automaticallyManagesSubnodes = true
let width = UIScreen.main.bounds.size.width
let height = (width * model.height) / model.width
gifImageNode.url = URL(string: "https://i.pinimg.com/originals/07/44/38/074438e7c75034df2dcf37ba1057803e.gif")
gifImageNode.style.width = ASDimensionMake(width)
gifImageNode.style.height = ASDimensionMake(height)
gifImageNode.animatedImagePaused = true
gifImageNode.addTarget(self, action: #selector(self.toggleGifPlay), forControlEvents: .touchUpInside)
}
@objc func toggleGifPlay()
{
self.gifImageNode.animatedImagePaused = !self.gifImageNode.animatedImagePaused
self.playImage.isHidden = !self.gifImageNode.animatedImagePaused
}
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
let playButtonCenterSpec = ASCenterLayoutSpec(centeringOptions: .XY, sizingOptions: .minimumXY, child: self.playImage)
return ASOverlayLayoutSpec(child: gifImageNode, overlay: playButtonCenterSpec)
}
}
当我尝试在另一个 ASCellNode 中使用 gif 节点时,它不会呈现。我可以看到播放按钮,但看不到实际的 gif 文件。如果我尝试使用相同的控件加载 jpeg,它工作正常。如果我尝试直接加载 gif 而不是使用上面的类,它也可以正常工作。
不知道我是否遗漏了什么。
解决方案
我测试您的应用程序,但gifImageNode.animatedImagePaused = true
默认情况下禁用您的动画。
推荐阅读
- php - Laravel 排队的作业在失败时不会重试
- javascript - 您如何为 Microsoft Excel 开发一个可供下载(不是从 Excel 市场)的插件?
- html5-canvas - Fabric JS:缩放时对齐指南未正确定位
- ios - 如果使用链接的人下载了应用程序,我的 swift 应用程序是否可以链接到应用程序商店并将信息传递给应用程序?
- c++ - 如何从小数部分大于参数的列表中删除数字?
- html - 有没有办法同时改变css/html中多个引用的路径?由于根目录中没有 index.html 导致的部署问题
- c++ - 有没有办法使用 c++ 和在线 IDE 创建可执行文件
- javascript - 为用户仪表板背景创建弯曲的侧边栏
- python - 熊猫每 15 分钟重新采样一次,如果时间戳不存在,则使用最接近的值进行插值
- java - cassandra 中的提交日志分析