Я хочу наложить прямоугольник на изображение. Этот код ниже в настоящее время работает, но он возвращает прямоугольник с тонкой рамкой. Я не могу изменить ширину прямоугольника. Один из способов вернуть пользовательский прямоугольник с более толстой рамкой — использовать 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 рисует рамку внутри указанного прямоугольника. Если вы хотите вместо этого заполнить область, вы можете использовать UIRectFill.
Чтобы изменить цвет обводки и/или заливки, вы можете вызвать -setStroke или -setFill на UIColor. Например:
[[UIColor red] setFill];
UIRectFill(rect);
Чтобы установить ширину линии обводки, вам нужно установить ширину линии в текущем CGContext:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 10);
Редактировать: Есть еще более простой способ: NSFrameRectWithWidth позволяет вам напрямую указывать ширину вместо того, чтобы устанавливать ширину линии в контексте.
Нет, мне не нужен заполненный прямоугольник. Мне нужна только рамка.
Я обновил ответ, чтобы он содержал подробности о том, как получить текущий CGContext и изменить ширину строки.
@LorKamHoi извините, я еще раз посмотрел, и есть еще более простой способ. Добавил это в мой ответ.
«невозможно добавить SubView в UIImage» неверно. Конструктор интерфейсов не позволит вам это сделать, но нет проблем с добавлением подпредставления к
UIImageв коде.