Как отобразить иерархию UIView в CGContext с помощью композиционной модели CoreAnimation - PullRequest
2 голосов
/ 22 декабря 2010

Я пытаюсь преобразовать иерархию 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 при сохранении всех преобразований и свойств слоя?

Если решение включает в себя рекурсивную итерацию иерархии представления, рендеринг каждого вида в отдельности и применение всех преобразований и свойств на этапе компоновки для каждого родительского представления, как применяются 3D-преобразования?

1 Ответ

0 голосов
/ 01 ноября 2011

Извините, но вы никак не могли бы это сделать.

Текущее состояние анимации слоя является частным и недоступным. Вероятно, это связано с соображениями производительности. Разрешение доступа к непосредственным значениям анимируемых свойств и наличие значений в структурах, совместимых с Core Graphics, снизит производительность графики.

...