今天我正试图找出一种将SwiftUI和Texture(AsyncDisplayKit)进行接口的方法。
这样,我可以在详细视图中获得AsyncDisplayKit,ASNetworkImage等的速度和优势,以及SwiftUI和Combine的灵活性。
答案 0 :(得分:0)
连接SwiftUI和Texture / AsyncDisplayKit
我们可以初始化节点并提供一个SwiftUI视图用作后备视图。
文本视图嵌套在UIHostingController
(一个UIViewController
子类中,该子类表示UIKit上下文中的SwiftUI视图)。
该视图是通过一个块提供的,该块将返回一个视图,以便可以保存该视图的实际构造直到以后。节点显示步骤是同步发生的,因为节点只有在包装_ASDisplayView
(内部视图子类)时才能异步显示,而在包装UIView
时则不能异步显示。
//
// HostingNode.swift
//
import AsyncDisplayKit
import SwiftUI
class HostingNode: ASDisplayNode {
var viewController: UIViewController?
override init() {
super.init()
setViewBlock { [weak self]() -> UIView in
self?.viewController = self?.makeHostingController()
return self?.viewController?.view ?? UIView()
}
}
private func makeHostingController() -> UIViewController {
UIHostingController(
rootView: Text("Attention")
)
}
}
参考: