CALayer renderInContext: позиция рисования
у меня есть UIView
С пользовательской формой, нарисованной в drawRect:
. The frame
свойство имеет значение:
{5.f, 6.f, 50.f, 50.f}
теперь я визуализирую представление в контексте изображения, но он игнорирует свойство frame 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
- Это правильный путь. As renderInContext:
документация состояния: "отображает в координатном пространстве слоя."Это означает, что происхождение кадра вашего слоя/представления игнорируется.
о CGContextDrawLayer
, он не предназначен для использования с CALayer
, но с CGLayer
. Это две совершенно разные вещи, и они объясняют ваш крах.