2017-10-04 1 views
0

Ich habe Bildschirm gleich der Größe des SceneView im suchenUnable Screenshot aufzunehmen - Bildschirmgröße und das Rück Bild Ausgabe

let screen = CGRect(x: 0, y: 0, width: sceneView.frame.size.width, height: sceneView.frame.size.height - 60) 


In Bezug auf die Größe zu erfassen, ich bin mit einem „aufrufen kann nicht initializer begrüßt für geben Sie CGFloat mit einer Argumentliste vom Typ (CGRect). Wie würde ich über die Festsetzung dieser Fehler gehen?

func Screenshot() 
{ 
     UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(screen)) 
     view.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil) 
} 
+0

Um benutzerdefinierte Grenzen zu erstellen, verwenden Sie CGSize. – jonpeter

Antwort

1

Sie haben bestanden falsche Parameter ein Argument UIGraphicsBeginImageContextWithOptions eingeben. Letztes Argument ist vom Typ CGFloat, das akzeptiert Gleitkommawert, aber Sie haben den Wert vom Typ CGRect (Bildschirm) übergeben.

UIGraphicsBeginImageContextWithOptions hat folgende Parameter Argumente

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 


Parameter

Größe
die Größe (in Punkten gemessen) des neuen Bitmap-Kontext. Dies entspricht der Größe des von der Funktion UIGraphicsGetImageFromCurrentImageContext zurückgegebenen Bilds. Um die Größe der Bitmap in Pixeln zu erhalten, müssen Sie die Werte für Breite und Höhe mit dem Wert im Parameter scale multiplizieren.

opaken
Ein boolescher Merker, der anzeigt, ob die Bitmap-opak ist. Wenn Sie wissen, dass die Bitmap vollständig undurchsichtig ist, geben Sie YES an, um den Alphakanal zu ignorieren und den Speicher der Bitmap zu optimieren. Die Angabe von NO bedeutet, dass die Bitmap einen Alpha-Kanal enthalten muss, um mit teilweise transparenten Pixeln umgehen zu können.

Skala
Der Skalierungsfaktor auf die Bitmap anzuwenden. Wenn Sie einen Wert von 0,0 angeben, wird der Skalierungsfaktor auf den Skalierungsfaktor des Hauptbildschirms des Geräts eingestellt.

Hier Apple-Dokument für diese Funktion: UIGraphicsBeginImageContextWithOptions

Solution (Hinweis): Pass-Wert 0,0 oder 1,0 anstelle von Bildschirm und sehen.

UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(1.0)) 
+0

Nochmals vielen Dank, Krunal. Für diejenigen von Ihnen, die auch Ihre eigenen benutzerdefinierten Grenzen erstellen möchten, verwenden Sie CGSize wie folgt - let screen = CGSize (width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height - 60) – jonpeter

Verwandte Themen