Воспроизведение GIF с использованием библиотеки GIFU в SceneKit приводит к зависанию пользовательского интерфейса приложения. UIView Анимированное существо, вызываемое из фонового потока - PullRequest
0 голосов
/ 03 марта 2020

Я отслеживаю изображение с помощью набора AR, после обнаружения изображения я играю GIF с библиотекой GIFU https://github.com/kaishin/Gifu. Это успешно с кодом ниже.

В V C я добавил 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 я не могу взаимодействовать с элементами пользовательского интерфейса в приложении. Пожалуйста, помогите, если кто-нибудь работал над такой проблемой.

[Анимация] + [UIView setAnimationsEnabled:] вызывается из фонового потока. Выполнение любой операции из фонового потока в UIView или подклассе не поддерживается и может привести к неожиданному и коварному поведению.

trace = (0 UIKitCore 0x00000001c2e87d70 27D3041D-A1DE-3C3A-8DC0- 994B5982DC49 + 15252848 1 libdispatch.dylib 0x00000001035b6bd8 _dispatch_client_callout + 16 2 libdispatch.dylib 0x00000001035b84c8 _dispatch_once_callout + 84 3 UIKitCore 0x00000001c2e87cd4 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 15252692 4 UIKitCore 0x00000001c2e87e5 c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 15253084 5 UIKitCore 0x00000001c21ccb8 * * 27D3041D тысяча тридцать четыре-A1DE-3C3A-8DC0-994B5982DC49 + 1903500 6 UIKitCore 0x00000001c2c2ec9 c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 12790940 7 UIKitCore 0x00000001c2a357b0 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 10721200 8 UIKitCore 0x00000001c2c2c9e c 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 12782060 9 UIKitCore 0x00000001c2a32d10 27D3041D-A1DE-3C3A-8DC0-994B5982DC30 030 001 0 30 0 8 0 0 8 0 28 0 0 28 0 28 0 30 28 0 30 0 28 0 28 28 0 0 28 0 28 28 0 28 28 0 28 28 0 28 0 28 0 28 28 41D-A1DE-3C3A-8DC0-994B5982DC49 + 10713904 11 UIKitCore 0x00000001c2a33894 27D3041D-A1DE-3C3A-8DC0-994B5982DC49 + 10713236 12 SceneKit 0x00000001d2afe7 * * 5BEC4C23-5650-30CD тысячу тридцать семь-96 CC -314CDAF2E954 + 2283468 13 SceneKit 0x00000001d2afe930 5BEC4C23- 5650-30CD-96 CC -314CDAF2E954 + 2283824 14 SceneKit 0x00000001d2b1e740 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 2414400 15 SceneKit 0x00000001-050 * 10 * 504 1050D0404-D4 * 10 -4-D-1040-D4104-D4104-T440 SceneKit 0x00000001d2961138 5BEC4C23-5650-30CD-96 * * -314CDAF2E954 тысяча сорок три + 590136 17 SceneKit 0x00000001d2961060 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 589920 18 SceneKit 0x00000001d2983d14 5BEC4C23-5650-30CD-96 * * -314CDAF2E954 одна тысяча сорок-пять + 732436 19 SceneKit 0x00000001d2980f80 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 720768 20 SceneKit 0x00000001d297fcc0 5BEC4C23-5650-30CD-96 CC -314CD-524 050 030 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 6 5 5 5 5 5 5 5 5 5 5 5 52 5 5 5 5 5 5 5 5 5 5 5 5 22 5 5 5 5 5 5 5 5 5 5 5 22 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5Д 5Д 5Д 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5ДД 711728 22 SceneKit 0x00000001d2aa7870 5BEC4C23-5650-30CD-96 * 10 49 * -314CDAF2E954 + 1927280 23 SceneKit 0x00000001d2aa75c4 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1926596 24 SceneKit 0x00000001d2aae844 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1955908 25 SceneKit 0x00000001d293a178 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 430456 26 SceneKit 0x00000001d293bac8 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 436936 27 SceneKit 0x00000001d2a33a4 c 5BEC4305 966F5306306306305306255255255255256255605605605605605605605606606255255605605605605605605605605605605605605605605605605-E-10-E-10-D-10-D-1054 -530-E-1030-E-1030-E-1030-E-1030-T430-T430-T630-T5 28 SceneKit 0x00000001d2a342b8 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1454776 29 SceneKit 0x00000001d2a34824 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1456164 30 SceneKit 0x00000001d2a34bb8 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1457080 31 SceneKit 0x00000001d2acf310 5BEC4C23-5650-30CD-96 * * -314CDAF2E954 тысяча пятьдесят-девять + 2089744 32 Аркыт 0x00000001d9ec1104 64C95206-B840-361E-B8A C -F70B23A324B4 + 958724 33 SceneKit 0x00000001d29954f4 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 804084 34 SceneKit 0x00000001d2a9ab14 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1874708 35 libdispatch.dylib 0x00000001035b6bd8 _dispatch_client_callout + 16 36 libdispatch.dylib 0x00000001035c5858 _dispatch_lane_barrier_sync_invoke_and_complete + 124 37 SceneKit 0x00000001d2a9aaa4 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 1874596 38 GPUToolsCore 0x00000001037655f8 - [DYDisplayLinkInterposer forwardDisplayLinkCallback:] + 168 39 QuartzCore 0x00000001c52b988 c 84C3CD6E-F832-3F6F-BE62-5A43482032O 7 71818203273 + 7 Комплект 0x00000001bf8d5934 IODispatchCalloutFromCFMessage + 488 41 CoreFoundation 0x00000001be8e18a c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 526508 42 CoreFoundation 0x00000001be90b07 c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 696444 43 CoreFoundation 0x00000001be90a7a8 1B9B1E61-8CB4-3903-9870- 402C3DE959BB + 694184 44 CoreFoundation 0x00000001be90567 c 1B9B1E61-8CB4-3903-9870-402C3DE959BB + 673404 45 CoreFoundation 0x00000001be904ad c CFRunLoopRunSpecifi c 464 + 46 Фонд 0x00000001bec447f4 503900AF-2ECD-329F-B742-C07C3E672BEB + 30708 47 SceneKit 0x00000001d29958d0 5BEC4C23 -5650-30CD-96 CC -314CDAF2E954 + 805072 48 SceneKit 0x00000001d2995b18 5BEC4C23-5650-30CD-96 CC -314CDAF2E954 + 805656 49 libsystem_pthread.dylib 0x000000st0 + 8) Вот проект для воспроизведения проблемы:

Просто запустите это в Device. https://drive.google.com/file/d/1FKHPO6SkdOEZ-w_GFnrU5CeeeMQrNT-h/view?usp=sharing

Вы просто запускаете этот проект на устройстве и сканируете изображение dinosaur.png (добавлен ионный код), и вы играете поверх него. Однажды, если вы go вернулись к первому V C, это все приложение заблокировано, вы не можете нажать ни на одну кнопку в First V C, а также вы не можете снова запустить сцену AR. Я не могу понять эту проблему, почему это происходит после фальсификации GIF. Можете ли вы попросить проверить и сообщить мне.

Если что-то потребуется, пожалуйста, дайте мне знать .. Заранее спасибо.

1 Ответ

1 голос
/ 05 марта 2020

Проблема исправлена.

мы должны добавить слой imageView в SCNMaterial ()

imgMaterial.diffuse.contents = self.imageView.layer

Спасибо за ваш ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...