0

我想通過UIUIActivityViewController從我的遊戲共享截圖。爲此,我正在以編程方式創建一個屏幕快照,並通過UIActivityViewController傳遞它。截圖通過編程變黑 - 斯威夫特

ActivityViewController似乎工作。但是,圖像全是黑色的。

這是我的代碼,我錯過了嗎?

UIGraphicsBeginImageContextWithOptions(view!.frame.size, false, 0.0) 
view!.layer.render(in: UIGraphicsGetCurrentContext()!) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 

let shareViewController = UIActivityViewController(activityItems: [image], applicationActivities: []) 
MenuScene.parentView.present(shareViewController, animated: true, completion: nil) 

MenuScene.parentView是GameViewController。

+0

關閉我頭頂的數字(第一行的第三個參數)不應該是1.0而不是0.0? – nanothread59

+0

嗨,謝謝你給它一個鏡頭!不幸的是,這不是解決方案。接觸這個問題的其他線程說0.0會返回一個與屏幕相同大小的圖像,以及Apple自己的文檔。儘管如此,我嘗試了1.0,但沒有像預期的那樣運氣。 – Developingdeveloper

回答

0

所以我將代碼更改爲以下內容,並獲得了很好的結果。

  let bounds = UIScreen.main.bounds 
      UIGraphicsBeginImageContextWithOptions(bounds.size, true, 0.0) 
      yourUIViewController.view!.drawHierarchy(in: bounds, afterScreenUpdates: false) 

      let img = UIGraphicsGetImageFromCurrentImageContext() 
      UIGraphicsEndImageContext() 

      let activityViewController = UIActivityViewController(activityItems: [img!], applicationActivities: nil) 

當然,呈現視圖。

yourUIViewController.present(activityViewController, animated: true, completion: nil)