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. Это две совершенно разные вещи, и они объясняют ваш крах.