Erstens, stark in Betracht ziehen, eine UIImageView
als Subview zu verwenden, anstatt zu versuchen, selbst bescheidene komplizierte Bildzeichnung selbst zu implementieren. UIImageView
ist für viele der Probleme optimiert, denen Sie begegnen können. Es ist nicht perfekt, und manchmal ist es möglich, mit der Hand besser zu werden, wenn Sie wissen, was Sie tun, aber es macht seine Arbeit gut.
Zu Ihrem spezifischen Problem, contentMode
ist fast sicher scaleToFill
(das ist die Standardeinstellung). Die einfachste Lösung besteht darin, sie in redraw
zu ändern, um ein vollständiges Neuzeichnen zu erzwingen, wenn sich die Grenzen ändern. Das ist nicht sehr effizient, aber möglicherweise für Ihr Problem in Ordnung (es ist oft in Ordnung). Es ist sehr viel komplizierter und macht oft sehr viel spezielles Wissen, wie sich Ihre App verhält. Für die einfachen Fälle, die diese hohe Qualität und Leistungsfähigkeit bilden, ist das, was UIImageView
für Sie tut.
Wenn Sie sicher sind von 20x20 zu einer anderen bestimmten Größe skaliert, und Sie haben nicht zu viele Ansichten haben, ist ein weiterer Trick bei Ihrer vollen Größe zu zeichnen und dann nach unten bis 20x20 skalieren. Dies ist sehr ineffizient, wenn Sie eine Menge Ansichten haben und die Größe der endgültigen Bilder ist groß, aber kann sehr schnell und von hoher Qualität sein, so ist zumindest etwas zu berücksichtigen. Ich habe das gemacht, um mit kleinen Zooms zu arbeiten (zum Beispiel zu 110% Größe). Es wäre wahrscheinlich keine gute Möglichkeit, Thumbnails in Vollbild-Bilder zu verwandeln.
Ich skaliere MyView superview, nicht die Ansicht selbst. –