2016-06-08 8 views
0

Also ich bin eine simple tutorial folgen, um den Benutzer zu ermöglichen, auf die Ansicht zu zeichnen, und ich habe den Code funktioniert. Aber ich möchte der Ansicht ein Hintergrundbild hinzufügen, damit der Benutzer auf dieses Bild zugreifen kann.Schwarze Ansicht beim Überschreiben von drawRect:

Das Problem, das ich habe, ist, dass der Hintergrund meiner PaintView immer schwarz ist, aber es gibt keine schwarzen Ansichten hinter der PaintView.

Ich denke, das Problem ist, dass CGImageRef cacheImage = CGBitmapContextCreateImage(cacheContext); erstellt einen schwarzen Hintergrund, wenn ich will, dass es einen transparenten Hintergrund erstellen.

So jetzt ist die Frage, wie kann ich das lösen, so dass der Hintergrund meiner PaintView transparent ist (oder das Bild, das ich von CGBitmapContextCreateImage bekomme, abhängig davon, was genau das Problem ist).

Der Code vorgeschlagen im Tutorial:

- (void) drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGImageRef cacheImage = CGBitmapContextCreateImage(cacheContext); 
    CGContextDrawImage(context, self.bounds, cacheImage); 
    CGImageRelease(cacheImage); 
} 

Der Code ich das Bild zeichnen verwenden:

- (void) drawRect:(CGRect)rect { 
    if(_snapshot != nil) { 
     [_snapshot drawInRect:rect]; 
    } 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGImageRef cacheImage = CGBitmapContextCreateImage(cacheContext); 
    CGContextDrawImage(context, self.bounds, cacheImage); 
    CGImageRelease(cacheImage); 
} 

Wo _snapshot ist die UIImage I angezeigt werden soll.

Mein nächster Gedanke ist, dass ich, wenn ich den CacheContext erstelle, initialisiere ich ihn mit einem schwarzen Hintergrund, der transparent sein sollte. Irgendwelche Ideen wie man das macht?

EDIT: Ich habe alles mit der CGContext von drawRect entfernt (nur die Zeichnung meines Bildes verlassen), die funktioniert, um das Bild zu zeichnen, aber einschließlich der CGContext Aufrufe, wird dies als schwarz gerendert.

PS: Ich benutze derzeit Xamarin, aber ich habe in Objective-C gefragt, weil Xamarin viele Dinge in Bezug auf CGContexte umbenennt. Ich kann C#, Objective-C und Swift lesen, so dass Sie in jeder Sprache antworten können.

Antwort

Verwandte Themen