Ich habe ein Problem mit CALayer-Schatten. So mache ich meine Meinung:
%Vor%Okay, das funktioniert ganz gut. Das hinzugefügte Bild ist die Retina-Auflösung. Sobald ich jedoch einen Schatten zur Ebene hinzufüge, springt er zur Standardauflösung, wodurch die Schaltfläche unscharf erscheint.
%Vor%Gibt es einen Grund, warum das Hinzufügen eines Schattens dieses Problem verursacht?
Ich kann nicht wirklich sagen, warum es passiert, aber ich nehme an, dass es durch die UIImage-Erstellung verursacht wird. Sie haben eine große (Retina-Größe 600 * 600 Pixel) CGImageRef erstellt und daraus die UIImage. Aber der UIImage ist nicht bewusst, dass es ein Retina-Bild ist (es hat jetzt 600 * 600 Punkte, es sollte 300 * 300 Punkte mit Skalierungsfaktor 2 haben, was wiederum 600 * 600 Pixel ergibt).
Bitte versuchen Sie, Ihre UIImage
mit imageWithCGImage:scale:orientation:
zu erstellen. Dies wird die UIImage auf Retina-Skala aufmerksam machen und die Layer-Operationen können in Ordnung sein.
Also wäre deine Zeile:
%Vor% Bearbeiten (siehe Kommentar unten): Das Problem wird durch l1.layer.shouldRasterize = YES
verursacht. Sie müssen auch l1.layer.rasterizationScale = scale
angeben und das Bild wird wie erwartet dargestellt.
Tags und Links iphone ios cocoa-touch calayer