gpt4 book ai didi

ios - 如何将 SwiftUI View 包装在 ASDisplayNode 中

转载 作者:行者123 更新时间:2023-11-29 05:23:01 24 4
gpt4 key购买 nike

今天我试图找出一种连接 SwiftUI 和纹理 (AsyncDisplayKit) 的方法。

通过这种方式,我可以在详细 View 中获得 AsyncDisplayKit、ASNetworkImage 等的速度和优势,以及 SwiftUI 和合并的灵 active 。

最佳答案

SwiftUI 和纹理/AsyncDisplayKit 接口(interface)

我们可以初始化一个节点并提供一个 SwiftUI View 作为后备 View 。Text View 嵌套在 UIHostingController 中,它是一个 UIViewController 子类,表示 UIKit 上下文中的 SwiftUI View 。

该 View 是通过一个 block 提供的,该 block 将返回一个 View ,以便可以保存 View 的实际构造以供稍后使用。节点显示步骤同步发生,因为节点只能在包装 _ASDisplayView(内部 View 子类)时异步显示,而在包装 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")
)
}
}

引用文献:

关于ios - 如何将 SwiftUI View 包装在 ASDisplayNode 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58478492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com