#iphone #cocoa-touch #quartz-graphics
#iPhone #cocoa-touch #quartz-графика
Вопрос:
Возможно ли нарисовать путь в UIView с помощью CGPath и экспортировать его в формате PNG?
Комментарии:
1. ДА. О, я полагаю, вы хотели код, не так ли?..
2. Нет, честно говоря, я просто хочу, чтобы указатель отображался лучше. Я не хочу рыбу, я хочу научиться ловить рыбу.
3. В любом случае, спасибо. «Да» — это что-то действительно большое. Вопрос о том, как это сделать, также важен, но просто знать, что это возможно, полезно.
Ответ №1:
Предполагая, что вам нужно UIImage, а не png-файл, вы можете сделать что-то вроде этого:
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(context, 2.0);
CGContextSetLineCap(context, kCGLineCapSquare);
//DRAW YOUR PATH HERE
CGContextStrokePath(context);
myUIImage = UIGraphicsGetImageFromCurrentImageContext();
[myUIImage retain];
UIGraphicsEndImageContext();
Комментарии:
1. Однако это может привести к размытости изображений. UIGraphicsBeginImageContextWithOptions можно использовать с последним аргументом 0.0, чтобы избежать этого.
Ответ №2:
Самый простой способ сделать это — снова выполнить весь чертеж в контексте изображения, созданном UIGraphicsBeginImageContext()
, извлечь UIImage
из него, затем сохранить его с помощью UIImagePNG/JPEGRepresentation()
функций.
Обратите внимание, что UIView не «удерживает» изображения. Вы можете повторно отобразить слой UIView, но это грубое нарушение MVC (вы используете views для хранения данных модели!), и мне это не кажется чистым.