如何绘制一个像素宽的UIBezierPath?

时间:2012-11-02 14:53:29

标签: ios6 retina-display quartz-2d

我在设置为iPhone的模拟器(Retina 4英寸)中运行此代码

-(void)drawRect:(CGRect)rect {
    [[UIColor whiteColor]set];
    UIRectFill(self.bounds);
    UIBezierPath *vertLine = [UIBezierPath bezierPath];
    [vertLine moveToPoint:CGPointMake(20.5, 10.0)];
    [vertLine addLineToPoint:CGPointMake(20.5, 20.0)];
    vertLine.lineWidth = 1.0;
    [[UIColor blackColor]set];
    [vertLine stroke];
}

我希望有一条像素的垂直线,但是两条像素宽的线条和纯黑色。 纯黑色似乎表明这不是由于像素网格上线条对齐的问题(在这种情况下它会是50%灰色)

这里发生了什么?

1 个答案:

答案 0 :(得分:3)

对于UIKit,您不指定像素而是指定点数。然后将点自动映射到像素。您的1点宽度线似乎映射到两个视网膜像素。

请参阅http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html

中的“点数与像素数”