2009-11-16 4 views
6

Я используюCALayer renderInContext

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; 
rotationAndPerspectiveTransform.m34 = 1.0/-500; 

Это успех, но я использую «renderInContext: контекст» получить CGImage из контекста, я обнаружил, что эффект изображения не изменяется!

Как я могу получить изображение этого эффекта от CALayer?

ответ

2

Мой первоначальный ответ следует ниже. Это было действительно в то время, когда я опубликовал его, но Apple больше не разрешает использование UIGetScreenImage. Насколько мне известно, после запуска iOS4 нет никакой альтернативы, как сделать слои с 3D-преобразованием + ваше приложение будет отвергнуто, если вы используете UIGetScreenImage



Из документов разработчика iPhone на renderInContext:

Кроме того, слои, которые используют 3D преобразования не отображаются, равно как и слоев, которые определяют backgroundFilters, фильтров, compositingFilter или маску значения.

Таким образом, renderInContext не является функцией, которую необходимо использовать для визуализации слоя, на котором применено 3D-преобразование.

Лучшее, что вы можете сделать, это позвонить: UIGetScreenImage, который в основном даст вам скриншот, и вы сможете извлечь изображение из этого скриншота.

+2

UIGetScreenImage больше не допускается. Я только что получил электронное письмо от Apple, попросив прекратить использование этой частной функции и использовать -renderInContext: (на iOS 3.x) или AV Foundation AVCaptureSession и связанные классы (на iOS 4). – vfn

+0

Я получил сегодня тот же адрес электронной почты от Apple, и мой случай похож на ваш. По-видимому, нам придется поцеловать до свидания всем пользователям, использующим iOS3, или поцеловать прощание с захватом ... любые мысли? – SpaceDog

+1

Забавно, что сегодня одно из моих приложений тоже было отклонено для использования UIGetScreenImage() ... Я тестировал на iOS4, но renderInContext STILL НЕ производит 3D-преобразования, поэтому я честно не знаю, что лучше всего делать прямо сейчас –