ios6 - 如何绘制一像素宽的 UIBezierPath?

标签 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% 灰色)

这里发生了什么?

最佳答案

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

请参阅 http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GraphicsDrawingOverview/GraphicsDrawingOverview.html 中的“点与像素”

关于ios6 - 如何绘制一像素宽的 UIBezierPath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13197634/

相关文章:

iphone - AVAudioPlayer 在 iPhone 5 上不工作

ios - UIFont 和 Retina 显示。体积翻倍?

iphone - 如何确定 Quartz 2d 中的两条路径是否相交?

objective-c - 包含在多个类中时的 iOS 6 外观

ios6 - 发送推送通知时如何从 APN 获取反馈

iphone - iOS 启动图像和状态栏

ios - 在 iOS 上,当我们从上下文中创建一个层并获取层的上下文后,这些上下文如何相互关联?

ios - 如何加载现有的PDF

iphone - 将数据从 View Controller 传递到另一个的断点

ios - 视网膜 4 中的背景图像