我试图绘制一条简单的线条,问题是它的宽度不是1像素而是2.文档说明用户空间单位会转换为像素,如果我正确读取的话。
代码非常简单,但我的行总是2像素宽。
//Get the CGContext from this view
CGContextRef context = UIGraphicsGetCurrentContext();
//Set the stroke (pen) color
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
//Set the width of the pen mark
CGContextSetLineWidth(context, 1);
for (int i = 1; i <= sections - 1; i++)
{
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0.0, i * kSectionHeight)];
CGContextMoveToPoint(context, 0.0, i * kSectionHeight); //Start point
CGContextAddLineToPoint(context, self.frame.size.width, i * kSectionHeight);
}
CGContextStrokePath(context);
答案 0 :(得分:3)
没有点不会转换为像素。 如果您的线太粗,请更改该值。
答案 1 :(得分:0)
我在测试应用中尝试了以下内容:
CGFloat desiredWidthInPixels = 1.0f;
CGFloat lineWidth = desiredWidthInPixels / [[UIScreen mainScreen] scale];
NSLog(@"lineWidth = %f", lineWidth);
我得到的线宽为0.5f,它应该准确地转换为屏幕上的单个像素宽度(因为比例为2.0,表示“Retina”设备)。这应该适应不同屏幕尺寸的设备。
***警告:当然,只有[[UIScreen mainScreen] scale]
像目前一样运作,这才有效。