CALayer renderInContext: положение чертежа - программирование
Подтвердить что ты не робот

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.

4b9b3361

Ответ 1

Использование CGContextTranslateCTM - правильный путь. Как renderInContext: documentation говорится: "Оставляет в координатном пространстве слоя". Это означает, что происхождение кадра вашего слоя/вида игнорируется.

Относительно CGContextDrawLayer он не используется для использования с CALayer, но с CGLayer. Это две разные вещи и объясняет ваш крах.