Я создаю настраиваемый узел, чтобы показать файл 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)
}
}
Когда я пытаюсь использовать узел gif в другом узле ASCellNode, он не отображается. Я вижу кнопку воспроизведения, но не сам файл gif. Если я попытаюсь загрузить jpeg с тем же элементом управления, все будет нормально. Также он отлично работает, если я пытаюсь загрузить gif напрямую, а не использовать вышеуказанный класс.
Не уверен, что я что-то упускаю.
Я пробовал такой же, а также другой URL-адрес.
Можете ли вы предоставить простой пример приложения для игры?
Я создал репозиторий git AsyncDisplayKitGifIssue. В MyNode.swift есть 2 функции. Вы можете переключиться, чтобы увидеть результат.
Я тестирую ваше приложение, но gifImageNode.animatedImagePaused = true по умолчанию отключена анимация ur, что вы хотите? Можешь ли ты вызвать мне по скайпу: бимава
такой глупый. Не понимал, что AnimagePaused вызывает эту проблему. Еще раз спасибо @Bimawa
Без проблем, мой друг. Постараюсь добавить за вас ответ.





Я тестирую ваше приложение, но gifImageNode.animatedImagePaused = true по умолчанию отключена анимация ur.
Вы используете тот же URL для другого узла? Мб это просто обналичили?