带边框的iOS UIImage具有较粗的角半径

时间:2015-08-03 19:29:05

标签: ios objective-c uiimage core-graphics paint-code

我尝试使用具有边框和角半径的CoreGraphics(通过PaintCode)在代码中构建UIImage。我发现图像边缘有明显较粗的边框。这似乎是一个iOS错误或我完全遗漏的东西。请指教。

代码:

CGRect rect = CGRectMake(0, 0, 53, 100);

//// UIGraphics for UIImage context
CGContextRef context = UIGraphicsGetCurrentContext();
UIGraphicsPushContext(context);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);

//// Rectangle Drawing
UIBezierPath *rectanglePath = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius];
[backgroundColor setFill];
[rectanglePath fill];
[borderColor setStroke];
rectanglePath.lineWidth = 1.4;
[rectanglePath stroke];

//// UIBezierPath to Image
CGContextAddPath(context, rectanglePath.CGPath);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsPopContext();
UIGraphicsEndImageContext();

return image;

图像:

thicker corner radius

这里的行宽为1,宽度为60,看起来有点厚:

enter image description here

2 个答案:

答案 0 :(得分:3)

对于那些跟随你的人:

感谢有用的@ PixelCutCompany我需要插入UIBezierPath的边界,以便边框不会超出我正在绘制的图像的边框。

为lineWidth为1修改了以下代码。

CGRect boundedRectForRadius = CGRectMake(1, 1, 58, 98);
UIBezierPath *rectanglePath = [UIBezierPath bezierPathWithRoundedRect:boundedRectForRadius cornerRadius:cornerRadius];

如果没有这个,那就是裁剪图像:

enter image description here

答案 1 :(得分:0)

问题还可能在移位真实屏幕像素坐标。 请查看此讨论以获取更多详细信息: Core Graphics is not drawing a line at the correct width