在iPad上绘制线条的奇怪问题

时间:2011-07-05 12:20:35

标签: objective-c ios ipad line cgcontext

我有一项任务是在UIView单元格之间绘制一个高度为2px的分隔线。顶部1px高线应该有颜色#F1F1F1,底部1px高线应该有颜色#DDDDDD 结果,在带有Retina显示屏的iPhone模拟器上,这两条线条清晰可见不同的颜色(#F1F1F1和#DDDDDD部分),在iPad模拟器上 - 线条扭曲,没有这种颜色的线条。

用于绘制此类行的代码片段:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);     
CGContextSetLineWidth(context, 1.);

CGContextSetStrokeColor(context, CGColorGetComponents(
          [[GlobalHelper colorFromHexRGB:@"#F1F1F1"] CGColor]) );

CGContextMoveToPoint(context, 0., line_y);
CGContextAddLineToPoint(context, rect.size.width, line_y );
CGContextStrokePath(context);
CGContextRestoreGState(context);
CGContextSaveGState(context);     
CGContextSetLineWidth(context, 1.);

CGContextSetStrokeColor(context, 
                  CGColorGetComponents([[GlobalHelper colorFromHexRGB:@"#DDDDDD"] CGColor]));

line_y += 1.;
CGContextMoveToPoint(context, 0., line_y);
CGContextAddLineToPoint(context, rect.size.width, line_y );
CGContextStrokePath(context);
CGContextRestoreGState(context);

用于视图对象,用作绘图线的持有者(这是UITableViewCell的子类)。我尝试更改参数“opaque”和“clearsContextBeforeDrawing”。同样的结果 - 在iPhone Retina上一切正常,对于iPad - 线条都是扭曲的。

有关导致此问题的原因和解决方法的任何想法?

1 个答案:

答案 0 :(得分:3)

一个想法:在整数坐标处绘制的1像素宽线将被模糊,因为线的一半将位于像素边界的每一侧。尝试在line_y坐标上添加0.5,看看它是否能解决您的问题。