2011-01-05 8 views
0

Ich habe eine benutzerdefinierte UIView erstellt, die die drawRect-Methode mit Quartz überschreibt. Ich habe es schließlich geschafft, alles so zu machen, wie ich es möchte, aber es gibt ein wirklich eigenartiges Verhalten, das ich nicht verstehen kann.Quartz 2D-Zeichnung RGB in Alpha verblasst UIView

Wenn ich die benutzerdefinierte UIView als => definiert verwenden (@interface TagView: UIView) mit seinem Alpha-Wert auf 1 gesetzt, dann zieht es genau so, wie ich erwarten würde es zu.

Das Problem, das mir begegnet, ist, dass ich in einer bestimmten Instanz es mit einem Alpha von 0,3 zeichnen möchte, so habe ich die Ansicht zu IB mit einem Alpha von 0,3 hinzugefügt. Ich zeichne eine Anzahl von Artefakten mit verschiedenen RGB-Werten, die mit CGContextSetRGBStrokeColor und CGContextSetRGBFillColor gesetzt werden. Das alles funktioniert gut, bis ich versuche, einen Wert ungleich null für alle 3 RGB-Werte zu setzen.

Um zu veranschaulichen, wenn ich folgendes verwende: CGContextSetRGBStrokeColor (Kontext, 1, 1, 0, 1); dann bekomme ich eine gelbe Linie. Wenn ich verwende: CGContextSetRGBStrokeColor (Kontext, 1, 1, 0.001, 1); Ich bekomme überhaupt nichts.

Es scheint so lange, wie ich einen der RGB-Werte auf 0 setzt, ist es glücklich und zeichnet, aber sobald alle drei Werte nicht Null sind, scheitert es. Auch das funktioniert alles gut, wenn das Alpha der Ansicht auf 1.0 gesetzt ist (dh ich kann weiß ohne irgendwelche Probleme zeichnen).

Hat jemand irgendwelche Gedanken oder Vorschläge, was könnte dies verursachen oder wie ich das Problem diagnostizieren könnte?

Antwort

0

Garrrrrrr ... Es scheint meine mystische Fähigkeit, eine Frage in einem Forum zu stellen NUR um es selbst zu erarbeiten 30 Sekunden später hat wieder geschlagen! (Natürlich ist dies nach 2 1/2 Tagen Haare ziehen ...).

Es scheint, ich hatte versehentlich die Hintergrundfarbe der Ansicht als weiß verlassen. Mit 0,3 Alpha war es eigentlich nicht sehr offensichtlich. Weiß auf weiß == unsichtbar, daher vermute ich, dass die Linien deshalb nicht sichtbar waren. Ich hätte gedacht, dass das FAST Gelb erschienen wäre, aber das scheint nicht der Fall zu sein.

0

Versuchen Sie, die opaque -Eigenschaft Ihrer benutzerdefinierten Ansicht auf NO zu setzen.