I rettangoli CoreGraphics sovrapposti e toccanti hanno un bordo di 0,5 pixel
-
03-07-2019 - |
Domanda
I miei riempimenti grafici principali si comportano in modo strano quando si avvicinano, si toccano o si sovrappongono. Questo problema riguarda iPhone Simulator e iPhone OS 2.2.
Qui abbiamo due etichette e una vista personalizzata con due CGContextFillRect ():
Quando il blu e il rosso si uniscono, sviluppano questa irritante linea di fusione di 0,5 px. Non riesco a liberarmene, o addirittura a cambiarne il colore.
Questa versione ha uno spazio di 1px tra i rettangoli ed è ovviamente riempita con lo sfondo nero:
Ho provato a disabilitare l'antialiasing ma questo non risolve il problema.
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetAllowsAntialiasing(context, false);
CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0);
CGContextFillRect(context, CGRectMake(20.0, 35.0 + 40 + 20 , 100, 40));
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, CGRectMake(20.0 + 100 , 35.0 + 40 + 20 , 100, 40));
CGContextSetAllowsAntialiasing(context, true);
}
Qualche idea?
Soluzione
Non ci sono difetti. È un'illusione ottica. Il tuo occhio sta integrando i valori R & B ravvicinati e inferendo la sovrapposizione del bianco.
Dai un'occhiata alla grafica con pixie (parte di Xcode) o xscope (un aggiornamento a pagamento da iconfactory).
http://www.freeimagehosting.net/uploads/th.e015daef50.png>