我有一个ARSCNView,ViewController.swift我想将它保存ARFrames到一个预先分配的数组中
func session(_ session: ARSession, didUpdate frame: ARFrame)
Run Code Online (Sandbox Code Playgroud)
但是,在处理大约 11-13 后ARFrames,整个ARSCNView将通过使用冻结
self.ARFrames.append(frame)
Run Code Online (Sandbox Code Playgroud)
奇怪的是,func session(_ session: ARSession, didFailWithError error: Error)在此过程中没有调用,也没有报告任何其他错误,应用程序没有崩溃,所有其他用户控件都可以正常工作,只有ARSCNView冻结和didpUdate 事件不会被调用。类似于ARSCNView 在添加具有强引用的 14 个 ARAnchor 子类对象时冻结,但那里的页面没有解决方案。同时也是应用后转到后台并返回,sessionWasInterrupted(:)和sessionInterruptionEnded(:)被称为,即使现场查看被冻结之前。这是iOS 11的错误吗?
这是我在我的应用程序中使用的完整代码。
import UIKit
class ViewController: UIViewController,ARSCNViewDelegate,ARSessionDelegate {
@IBOutlet var sceneView: ARSCNView!
let configuration = ARFaceTrackingConfiguration()
var ARFrames = [ARFrame]()
var imgCount = 0
override func viewDidLoad() {
super.viewDidLoad()
ARFrames.reserveCapacity(300)
sceneView.delegate = self
sceneView.session.delegate …Run Code Online (Sandbox Code Playgroud) 我正在处理我的 SwiftUI 项目,现在每个视图都在 SwiftUI 中,但是由于 SwiftUI 的一些限制,我必须将 Storyboard 的 ViewControllers 添加到我的 SwiftUI 项目中。我正在尝试这种方法,
struct AssetsListView: UIViewControllerRepresentable {
var taskID : String
public typealias UIViewControllerType = AssetsListViewController
func makeUIViewController(context: UIViewControllerRepresentableContext<AssetsListView>) -> AssetsListViewController {
let assetsListVC = AssetsListViewController()
assetsListVC.taskID = taskID
return assetsListVC
}
func updateUIViewController(_ uiViewController: AssetsListViewController, context: UIViewControllerRepresentableContext<AssetsListView>) {
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,甚至我的故事板的 ViewController 调用的 viewDidLoad() 方法,但我无法在我的故事板屏幕上看到任何元素。我该如何渲染这些元素?就像普通的故事板一样。
我试图在其预期操作完成后解除模态,但我不知道目前如何在 SwiftUI 中完成此操作。此模式由@State值更改触发。是否可以通过观察各种通知来更改此值?
想要的动作:Root -> Initial Modal -> Presents Children -> Dismiss modal from any child
以下是我尝试过的
错误:转义闭包捕获变异的“self”参数
struct AContentView: View {
@State var pageSaveInProgress: Bool = false
init(pages: [Page] = []) {
// Observe change to notify of completed action
NotificationCenter.default.publisher(for: .didCompletePageSave).sink { (pageSaveInProgress) in
self.pageSaveInProgress = false
}
}
var body: some View {
VStack {
//ETC
.sheet(isPresented: $pageSaveInProgress) {
ModalWithChildren()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
ModalWithChildren 测试动作
Button(action: {
NotificationCenter.default.post(
name: .didCompletePageSave, object: nil)},
label: …Run Code Online (Sandbox Code Playgroud)