0

Ich versuche, einen Screenshot aus meinem Spiel durch UIUIActivityViewController zu teilen. Dazu erstelle ich einen Screenshot programmatisch und übergebe ihn über den UIActivityViewController.Screenshot von Programmierung wird schwarz - Swift

Der ActivityViewController scheint zu funktionieren. Das Bild ist jedoch schwarz.

Hier ist mein Code, was vermisse ich?

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) 

Die MenuScene.parentView ist der GameViewController.

+0

Von der Spitze meines Kopfes, sollte nicht die Zahl (drittes Argument der ersten Zeile) 1.0 statt 0.0 sein? – nanothread59

+0

Hallo, danke, dass du es geschossen hast! Leider ist das nicht die Lösung. Die anderen Threads, die dieses Problem berühren, sagen, dass 0.0 ein Bild mit der gleichen Größe in Punkten wie der Bildschirm zurückgibt, sowie Apples eigene Dokumentation. Trotzdem habe ich 1,0 versucht, aber ohne Erfolg. – Developingdeveloper

Antwort

0

Also änderte ich den Code zu den folgenden, mit großen Ergebnissen.

  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) 

Und natürlich, die Sicht zu präsentieren.

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