Ich möchte den aktuellen Bildschirm in einem Bild erfassen. Ich tue dies:UIGraphicsBeginImageContext gibt kein Retinabild zurück
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.isOpaque, UIScreen.main.scale)
self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: false)
let snapshot = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Problem ist der Skalenparameter. Wenn ich richtig verstehe, repräsentiert 0.0 die Nicht-Retina, 2.0 die Retina und 3.0 die Retina für 6 Plus und 7 Plus. Egal, was ich in den Skalierungsparameter eingabe, der Ausgang ist immer ein Bild mit 375x667 Auflösung. Ich habe auch anderen Ansatz versucht:
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, self.view.isOpaque, UIScreen.main.scale)
self.view.layer.render(in: UIGraphicsGetCurrentContext()!)
let snapshot: UIImage? = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
Wieder dasselbe Szenario. Ich verwende auch
UIScreen.main.scale
die in der Tat kehrt 2.0 zu schätzen wissen. Was mache ich falsch? Wie bekomme ich ein Bild mit höherer Auflösung?
Eigentlich bedeutet 0.0 die tatsächliche Bildschirmskala, nicht nicht-Retina. Das ist 1.0. – the4kman
Wie bestimmen Sie die "Größe" des resultierenden Bildes? –
Was bedeutet "Auflösung"? Die einzige Sache, die sich unterscheiden würde, ist die resultierende Skalierung der UIImage. Die Größe wird in Punkten gemessen, nicht in Pixeln. es ist das gleiche für alle Skalen. – matt