Ho un personalizzato UIView
che viene disegnato utilizzando il suo metodo -[drawRect:]
.Strano anti-aliasing in vista personalizzata
Il problema è che gli atti di anti-aliasing molto strani come linee nere linee orizzontali o verticali sono disegnati molto sfocata.
Se rendo invalido anti-aliasing con CGContextSetAllowsAntialiasing
, tutto è disegnato come previsto.
anti-aliasing:
alt text http://dustlab.com/stuff/antialias.png
senza anti-alias (che sembra il risultato previsto con AA):
alt text http://dustlab.com/stuff/no_antialias.png
La larghezza della linea è esattamente 1, e tutte le coordinate sono valori interi .
Lo stesso accade se disegno un rettangolo utilizzando CGContextStrokeRect
, ma non se disegno esattamente lo stesso CGRect
con UIRectStroke
.
Oltre a ciò, Apple fornisce alcuni suggerimenti e codice di esempio nella sezione "Esecuzione di disegni con pixel" della Guida al disegno del cacao: http://developer.apple.com/mac/library/documentation/Cocoa/ concettuale/CocoaDrawingGuide/Transforms/Transforms.html # // apple_ref/doc/uid/TP40003290-CH204-BCICIJAJ –
qui è un modo semplice per evitare senza alcun codice affatto http://www.techpaa.com/2012/06/avoiding -view-edge-antialiasing.html – ShivaPrasad
@jeeva 'UIViewEdgeAntialiasing' è solo per i bordi dei livelli. La domanda riguarda le linee tracciate in Quarzo. Il disegno al quarzo non è influenzato da 'UIViewEdgeAntialiasing'. –