dji-sdk / Mobile-SDK-iOS

DJI Mobile SDK for iOS: http://developer.dji.com/mobile-sdk/
Other
577 stars 256 forks source link

DJIWidget是否支持SwiftUI #412

Closed lhcn closed 3 years ago

lhcn commented 3 years ago

`// // FPVView.swift // swiftui test

import SwiftUI import UIKit

struct DJIVideoPreviewView: UIViewRepresentable { var previewUI = UIView.init(frame: CGRect(x:300,y:300,width: 300,height: 300))

func updateUIView(_ uiView: UIViewType, context: Context) {
    // @TODO need update?
    NSLog("updateUIView")
}

func makeUIView(context: Context) -> some UIView {
    return previewUI
}

}

struct FPVView: View {

var camaraManager = CameraManager()

var previewView = DJIVideoPreviewView()

var body: some View {
    VStack {
        previewView
    }.onAppear(){
        camaraManager.start(previewView.previewUI)
    }.onDisappear(){
        camaraManager.end()
    }
}

}

struct FPVView_Previews: PreviewProvider { static var previews: some View { FPVView() } }

CameraManager部分

` class CameraManager: NSObject { var adapter: VideoPreviewerAdapter? var needToSetMode = false

func start(_ uiview: UIView) {

    let camera = fetchCamera()
    camera?.delegate = self

    needToSetMode = true

    DJIVideoPreviewer.instance()?.start()

    adapter = VideoPreviewerAdapter.init()
    adapter?.start()

    if camera?.displayName == DJICameraDisplayNameMavic2ZoomCamera ||
        camera?.displayName == DJICameraDisplayNameMavic2ProCamera {
        adapter?.setupFrameControlHandler()
    }

    DJIVideoPreviewer.instance()?.setView(uiview)
    NSLog("DJIVideoPreviewer.setView")
}

.... }

lhcn commented 3 years ago

实测:

  1. testSetView 能正常把子uiview挂到SWIFTUI里面正常显示 2.DJIVideoPreviewer.instance()?.setView(uiview),能看到图传内容出来,然后一秒app崩溃了。
dji-dev commented 3 years ago

Agent comment from Luce Luo in Zendesk ticket #42051:

尊敬的用户,

您好!感谢您联系DJI 大疆创新。 抱歉,这个问题需要与工程师确认下。 这将花费一定时间,一旦有任何进展我们将会再次联系您。

非常感谢您的理解与配合,祝您生活愉快!

Best Regards,

DJI 大疆创新SDK技术支持

lhcn commented 3 years ago

自己解决了

seungbeom-son commented 2 years ago

Hi, @lhcn

I'm in the exactly same case with you.

Could you tell me how did you resolve it?

Thank you.

你好 @lhcn

我跟你情况完全一样。

你能告诉我你是怎么解决的吗?

谢谢你

(Google translate)