在 UIImage 上覆盖一个较小的矩形

Overlay a smaller rectangle on a UIImage

我想在图像中叠加一个矩形。下面的代码目前有效,但它 return 是一个带有细框的矩形。我不能改变矩形框的宽度。 return 具有较粗边框的自定义矩形的一种方法是使用 UIView,但不可能将 SubView 添加到 UIImage。对此有什么解决办法吗?谢谢。

-(UIImage *)drawRectangleOnImage:(UIImage *)img rect:(CGRect )rect{

CGSize imgSize = img.size;
CGFloat scale = 0;
UIGraphicsBeginImageContextWithOptions(imgSize, NO, scale);
[img drawAtPoint:CGPointZero];
[[UIColor redColor] setStroke];
UIRectFrame(rect);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;

}

UIRectFrame draws a frame around the inside of the specified rect. If you want to fill the area instead, you can use UIRectFill.

要更改描边 and/or 填充颜色,您可以在 UIColor 上调用 -setStroke-setFill。例如:

[[UIColor red] setFill];
UIRectFill(rect);

要设置描边线宽,需要在当前CGContext上设置线宽:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 10);

编辑: 还有一个更简单的方法:NSFrameRectWithWidth 允许你直接指定宽度而不是在上下文中设置线宽。