2014-07-07 3 views
0

J'ai un problème très étrange avec le dessin d'un rectangle dans une cellule, car il dessine la cellule, mais quand il affiche, il y a une divergence dans la bordure couleur, je l'ai cherché partout et n'ont pas trouvé tout ce qui peut faire la lumière sur pourquoi cela pourrait être, ceci est une capture d'écran affichant le problème http://screencast.com/t/wPS507Bg9eLe rectangle de dessin dans les cellules change la couleur de bordure de certains des rectangles

Ceci est le code de la façon dont je dessine le rectangle

CGRect rect = CGRectMake(x, y, aRect.size.width, height); 

CGContextMoveToPoint(context, rect.origin.x, rect.origin.y + radius); 
CGContextAddLineToPoint(context, rect.origin.x, rect.origin.y + rect.size.height); 
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + rect.size.height ); 
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius); 
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, radius, ((0.0f)/180.0 * M_PI), ((-90.0f)/180.0 * M_PI) , 1); 
CGContextAddLineToPoint(context, rect.origin.x + radius, rect.origin.y); 
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + radius, radius, ((-90.0f)/180.0 * M_PI), ((180.0f)/180.0 * M_PI), 1);  

CGContextClip(context); 

Une autre chose étrange à propos de ce problème est qu'il semble ne faire que l'iPhone 5 et 5s, alias 4 "écrans seulement

La couleur est réglée une fois et n'est pas manipulé après qu'elle est définie dans la mesure où je peux voir, toute aide pourquoi ce serait serait aprécié

+0

Comment avez-vous éventuellement résolu votre problème? – SwiftArchitect

Répondre

0

Il n'y a pas d'écart dans la couleur elle-même , mais dans le emplacement actuel (origine), dimensions (taille), de vos rectangles, ou les deux. De votre capture d'écran, ils sont naturellement anti-aliasés.

Cela pourrait être dû au fait:

  1. Le x, y, largeur hauteur & ne sont pas tous les quatre valeurs discrètes (des nombres entiers).
  2. dessin de ligne se situe entre pixels ou étirage d'un tampon hors-écran (anti-aliasing)
  3. dessin dans un mal construit rétine offscreen tampon? Voir this post
+0

J'ai essayé de changer rect à CGRect rect = CGRectMake (0, 80, 30, 0); et cela ne change rien, ou est-ce que j'interprète mal ce que vous voulez dire en changeant l'origine et la taille en entiers? – Jetpack

+0

En regardant votre capture d'écran en grossissement, je vois que la couleur est correcte, mais l'aliasing est différent d'un roundrect à l'autre. L'épaisseur du bord n'est pas constante, provoquant l'apparition d'une couleur différente. J'ai copié votre extrait ci-dessus dans mon propre code, et je suis capable de reproduire le même problème sur un écran non-rétine. Ce code n'est pas en faute; travaillez-vous dans un tampon hors écran, ne correspondant pas à la résolution ou aux dimensions? Stretching l'image peut-être? – SwiftArchitect

Questions connexes