zeichnen CALayer in eine CGContext
Ich habe den folgenden code:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CALayer *sublayer = [CALayer layer];
sublayer.backgroundColor = [UIColor orangeColor].CGColor;
sublayer.cornerRadius = 20.0;
sublayer.frame = CGRectMake(20, 0, 300, 20);
[sublayer setNeedsDisplay];
[sublayer drawInContext:context];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
Aber wenn ich zurück newImage, es ist nur ein leeres Bild. Wenn ich drawInContext zu renderInContext, dann habe ich die oben genannten Unterschicht, aber es scheint, wie das Koordinatensystem Durcheinander.
Jede Idee, warum drawInContext auf das obige nicht funktioniert?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie es mit
renderInContext
im OrtdrawInContext
.Mein Verständnis ist, dass
drawInContext
ist es überschrieben werden kann, in der Erwägung, dassrenderInContext
wird verwendet, um das Rendern der Inhalt einer Ebene auf den Kontext.Vom die Dokumentation:
Koordinatensystem ist nicht versaut, pro se. Quarz verwendet ein anderes Koordinatensystem als UIKit. In Quarz, die Y-Achse entspringt am unteren linken Rand des framing-Rechteck. Die Werte werden größer als Sie weiter fahren "bis" das Rechteck. Für eine visuelle Darstellung finden Sie in der Dokumentation zu
http://developer.apple.com/library/mac/#documentation/graphicsimaging/Conceptual/drawingwithquartz2d/dq_overview/dq_overview.html
Diese unterscheidet sich von UIKit, dass UIKit Koordinatensystem der Ursprung ist das Obere linke y-Achse Werte positiver als Sie die Reise "nach unten".
Als für warum drawInContext: nicht arbeiten, sollten Sie auch Referenz-Dokumentation für die Klasse CALayer, wo es heißt, "Standardimplementierung tut nichts."
http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html