[使用SceneKit中的GIFU库播放GIF会导致应用程序UI冻结任何解决方案?从后台线程调用的UIView Animated

问题描述 投票:1回答:1

我正在使用AR Kit进行图像跟踪,一旦检测到图像,我将使用GIFU https://github.com/kaishin/Gifu库播放GIF。使用下面的代码可以成功。

在VC中,我添加了GIFImageView,如下所示:

  var imageView = GIFImageView(frame: CGRect(x: 0, y: 0, width: 600, height: 600))

并且在ARSceneView中,委托didAdd节点的方法如下:

  func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
DispatchQueue.main.async { self.instructionLabel.isHidden = true }
if let imageAnchor = anchor as? ARImageAnchor {
  //      handleFoundImage(imageAnchor, node)

  let size = imageAnchor.referenceImage.physicalSize

  DispatchQueue.main.async(){ // If we remove this we are getting UIview setAnimation is being call from background thread error is coming.
    self.imageView.animate(withGIFNamed: "tenor.gif") // I actually access gif from Document folder i.e Data format
  }
  let imgMaterial = SCNMaterial()

  imgMaterial.diffuse.contents = imageView

  let imgPlane = SCNPlane(width: size.width, height: size.height)

  imgPlane.materials = [imgMaterial]

  let imgNode = SCNNode(geometry: imgPlane)
  imgNode.eulerAngles.x = -.pi / 2

  node.addChildNode(imgNode)
  node.opacity = 1

}

}

我不知道控制台中的问题,我在下面看到了这些东西,玩了GIF之后,我无法与应用程序中的UI元素进行交互。如果有人在处理此类问题,请提供帮助。

从后台线程中调用

[Animation] + [UIView setAnimationsEnabled:]。不支持从UIView的后台线程或子类执行任何操作,这可能会导致意外和隐匿的行为。

trace =(0 UIKitCore 0x00000001c2e87d70 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 152528481个libdispatch.dylib 0x00000001035b6bd8 _dispatch_client_callout + 162 libdispatch.dylib 0x00000001035b84c8 _dispatch_once_callout + 843 UIKitCore 0x00000001c2e87cd4 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 152526924 UIKitCore 0x00000001c2e87e5c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 152530845 UIKitCore 0x00000001c21ccb8c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 19035006 UIKitCore 0x00000001c2c2ec9c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 127909407 UIKitCore 0x00000001c2a357b0 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 107212008 UIKitCore 0x00000001c2c2c9ec 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 127820609 UIKitCore 0x00000001c2a32d10 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 1071028810 UIKitCore 0x00000001c2a33b30 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 1071390411 UIKitCore 0x00000001c2a33894 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 1071323612 SceneKit 0x00000001d2afe7cc 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 228346813 SceneKit 0x00000001d2afe930 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 228382414 SceneKit 0x00000001d2b1e740 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 241440015 SceneKit 0x00000001d2990d8c 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 78580416 SceneKit 0x00000001d2961138 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 59013617 SceneKit 0x00000001d2961060 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 58992018 SceneKit 0x00000001d2983d14 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 73243619 SceneKit 0x00000001d2980f80 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 72076820 SceneKit 0x00000001d297fcc0 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 71596821 SceneKit 0x00000001d297ec30 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 71172822 SceneKit 0x00000001d2aa7870 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 192728023 SceneKit 0x00000001d2aa75c4 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 192659624 SceneKit 0x00000001d2aae844 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 195590825 SceneKit 0x00000001d293a178 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 43045626 SceneKit 0x00000001d293bac8 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 43693627 SceneKit 0x00000001d2a33a4c 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 145262028 SceneKit 0x00000001d2a342b8 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 145477629 SceneKit 0x00000001d2a34824 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 145616430 SceneKit 0x00000001d2a34bb8 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 145708031 SceneKit 0x00000001d2acf310 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 208974432 ARKit 0x00000001d9ec1104 64C95206-B840-361E-B8AC-F70B23A324B4 + 95872433 SceneKit 0x00000001d29954f4 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 80408434 SceneKit 0x00000001d2a9ab14 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 187470835 libdispatch.dylib 0x00000001035b6bd8 _dispatch_client_callout + 1636 libdispatch.dylib 0x00000001035c5858 _dispatch_lane_barrier_sync_invoke_and_complete + 12437 SceneKit 0x00000001d2a9aaa4 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 187459638 GPUToolsCore 0x00000001037655f8-[DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 16839 QuartzCore 0x00000001c52b988c 84C3CD6E-F832-3F6F-BE62-5A4348853273 + 7182040 IOKit 0x00000001bf8d5934 IODispatchCalloutFromCFMessage + 48841 CoreFoundation 0x00000001be8e18ac 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 52650842 CoreFoundation 0x00000001be90b07c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 69644443 CoreFoundation 0x00000001be90a7a8 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 69418444 CoreFoundation 0x00000001be90567c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 67340445 CoreFoundation 0x00000001be904adc CFRunLoopRunSpecific + 46446基金会0x00000001bec447f4 503900AF-2ECD-329F-B742-C07C3E672BEB + 3070847 SceneKit 0x00000001d29958d0 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 80507248 SceneKit 0x00000001d2995b18 5BEC4C23-5650-30CD-96CC-314CDAF2E954 + 80565649 libsystem_pthread.dylib 0x00000001be6a7d8c _pthread_start + 15650 libsystem_pthread.dylib 0x00000001be6ab76c thread_start + 8)这是重现问题的项目:

只需在Device中运行。https://drive.google.com/file/d/1FKHPO6SkdOEZ-w_GFnrU5CeeeMQrNT-h/view?usp=sharing

您只需在设备中运行该项目,然后扫描dinosaur.png图像(添加了ion xcode),您将gif在其顶部播放。一旦返回到firstVC,所有应用程序都将冻结,您将无法在First VC中点击任何按钮,并且也无法再次启动AR场景。我无法弄清楚这个问题,为什么在申请GIF后可以进行检查并让我知道呢?

如果需要任何内容​​,请让我知道。.预先感谢。

ios swift xcode scenekit gif
1个回答
0
投票

问题已解决。

我们必须将imageView图层添加到SCNMaterial()

imgMaterial.diffuse.contents = self.imageView.layer

感谢您的回复。

© www.soinside.com 2019 - 2024. All rights reserved.