So habe ich eine UIImageView mit etwas Text überlagert auf der Oberseite und der Unterseite. Ich möchte einen Screenshot erstellen, damit ich ein neues Bild mit dem darüber liegenden Text habe. Dies ist der Code, mit dem ich gearbeitet habe, aber ich kann keinen Screenshot des my UIImageView-Objekts erstellen.Wie mache ich einen Screenshot eines einzelnen View-Objekts statt des gesamten Bildschirms?
func generateImage() -> UIImage
{
// Render view to an image
UIGraphicsBeginImageContext(self.view.frame.size)
view.drawViewHierarchyInRect(self.imageView.frame,
afterScreenUpdates: true)
let memeImage: UIImage =
UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
}
Alternativ habe ich auch versucht, den Code unten, obwohl das Bild der richtige Größe/Bereich des Bildschirms gespeichert, es endet mit verschwommener Version von dem, was ich habe einen Screenshot:
UIGraphicsBeginImageContext(self.imageView.frame.size)
let context = UIGraphicsGetCurrentContext()
imageView.layer.renderInContext(context!) // tried drawInContext but it didn't work at all
let memeImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return memeImage
Danke für Ihre Eingabe. Dies ist vergleichbar mit der alternativen Methode, die ich ausprobiert habe. Leider bin ich auf das Problem gestoßen, dass nur das Bild kopiert wurde, aber nicht der Text, den ich auf dem Bild überlagere. Irgendeine Idee, wie man das löst? –
Alle Unteransichten werden eingeschlossen. Ist es möglich, dass Ihr Text keine Unteransicht der Ansicht ist, die Sie erfassen möchten? – squarehippo10
Können wir Subviews zu UIImageView über Storyboard hinzufügen? Es hat mich nicht gelassen. Eine mögliche Lösung könnte darin bestehen, die UIImageView- und UITextLabels in eine UIView einzubinden und die Funktion auf der UIView auszuführen. Ich nehme an, das programmatische Hinzufügen von UITextFields zu UIImageView erfordert auch das programmatische Hinzufügen von Einschränkungen - etwas, das ich zu lernen bereit bin, wenn es das Problem löst. –