Tengo un UIView
y dentro de él dibujé una línea usando Core Graphics anulando drawRect
. Esta vista también contiene una subvista que también dibuja una línea. Sin embargo, mientras que los dos puntos de vista están utilizando más o menos el mismo código (para propósitos de prueba por lo menos), las líneas dibujadas en ellos no aparecen los mismos:iPhone Core Graphics línea discontinua más gruesa para la subvista
Como se puede ver - la línea discontinua en la La parte superior es notablemente más gruesa que la inferior y no tengo idea de por qué. A continuación se muestra el código utilizado por los dos UIViews
en sus métodos drawRect
. Si tienes alguna idea de por qué sucede esto, te agradecería tu ayuda y consejo.
Primera Vista:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGFloat dashes[] = {1,1};
CGContextSetLineDash(context, 0.0, dashes, 2);
CGContextSetLineWidth(context, 0.6);
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMaxY(rect));
CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMaxY(rect));
CGContextStrokePath(context);
SubUIView *view = [[SubUIView alloc] initWithFrame:rect];
[self addSubview:view];
[view release];
La vista única duda se está elaborando una vez. Agradezco drawRect
puede no ser el mejor lugar para agregar una subvista, pero el problema se mantiene incluso cuando se agrega en el método principal initWithFrame
.
Segunda Vista:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [[UIColor whiteColor] CGColor]);
CGFloat dashes[] = {1,1};
CGContextSetLineDash(context, 0.0, dashes, 2);
CGContextSetLineWidth(context, 0.6);
CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMidY(rect));
CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMidY(rect));
CGContextStrokePath(context);
¿Por qué está agregando una subvista en la primera vista 'drawRect:'? – jer
@jer: ¿Importa necesariamente? Puedo agregar la subvista desde otro método como 'initWithFrame', pero aún hay una diferencia en el grosor de la línea. A menos que no tenga la intención de agregar subvistas a una vista que 'dibuja' sobre sí misma y, por lo tanto, el problema (?), Pero no he leído esto en ningún lugar ... todavía. – JoeR
@JoeR, sí, puede tener importancia: agrega subvistas cada vez que su vista se dibuja para que pueda terminar con varias subvistas idénticas colocadas una sobre otra, y eso puede causar que las líneas de la subvista aparezcan más gruesas ya que se dibujaron varias veces – Vladimir