Я пытаюсь отобразить иерархию UIView в CGContext или, в конечном итоге, в UIImage. Некоторые дочерние представления имеют трехмерные преобразования, которые renderInContext: игнорируются вместе с тенями и некоторыми другими свойствами CALayer.
Из CALayer.h:
/*
* WARNING: currently this method does not implement the full
* CoreAnimation composition model, use with caution. */
- (void)renderInContext:(CGContextRef)ctx;
После звонка в UIGraphicsBeginImageContext перепробовал несколько вариантов.
[self drawRect:[self bounds]];
[self.layer.delegate drawLayer:self.layer inContext:UIGraphicsGetCurrentContext()];
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
[self.layer display];
В лучшем случае иерархия представлений отображается без трехмерных преобразований. В худшем случае изображение пустое. Я хотел бы получить действительный альфа-канал в изображении, поэтому снимок экрана не совсем работает.
Есть ли способ визуализировать иерархию UIView с сохранением всех преобразований и свойств слоя?
Если решение включает рекурсивную итерацию иерархии представлений, рендеринг каждого представления как изображения отдельно и применение всех преобразований и свойств на этапе композиции для каждого родительского представления, как применяются трехмерные преобразования?