CALayer renderInContext: положение чертежа
У меня есть UIView
с пользовательской формой, нарисованной в drawRect:
. Свойству frame
установлено значение:
{5.f, 6.f, 50.f, 50.f}
Теперь я визуализирую представление в контексте изображения, но он игнорирует свойство кадра UIView
и всегда рисует UIView
в левом верхнем углу.
[_shapeView.layer renderInContext:UIGraphicsGetCurrentContext()];
Я попытался изменить frame
CALayer
, но ничего не изменилось. Изменение свойства bounds
ухудшило ситуацию. Единственная работа, которую я нашел полезной, заключалась в следующем:
CGRect frame = _shapeView.frame;
CGContextTranslateCTM(context, frame.origin.x, frame.origin.y);
[_shapeView.layer renderInContext:context];
Но это непрактично, когда я имею дело со многими формами, я хочу просто использовать свойство frame.
Ответы
Ответ 1
Использование CGContextTranslateCTM
- правильный путь. Как renderInContext:
documentation говорится: "Оставляет в координатном пространстве слоя". Это означает, что происхождение кадра вашего слоя/вида игнорируется.
Относительно CGContextDrawLayer
он не используется для использования с CALayer
, но с CGLayer
. Это две разные вещи и объясняет ваш крах.