2010-11-25 5 views
2

Я пытаюсь программно сохранить изображение текущего вида в UIImage. текущий вид содержит фон и ряд UIImageView, которые имели 3D-преобразование, примененное к слою, например.iPhone: как программно делать снимки экрана при использовании 3D-слоев

CATransform3D t = CATransform3DIdentity; 
t = CATransform3DRotate(t, rotationX, 1.0, 0, 0); 
t = CATransform3DRotate(t, rotationY, 0, 1.0, 0); 
object.layer.transform = t; 

я в настоящее время захвата скриншот текущего вида с помощью следующего кода:

UIGraphicsBeginImageContext(background.bounds.size); 
[background.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

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

UIGetScreenImage() не является вариантом, так как это частный API, и это приложение входит в магазин приложений.

+0

Возможный дубликат [Как создать UIImage из 3d-преобразованного слоя UIImageView?] (Http://stackoverflow.com/questions/1949003/how-do-i-create-a-uiimage-from-a- 3d-transform-uiimageview-layer) – 2010-11-25 02:44:36

ответ

1

Я не думаю, что это можно сделать в данный момент, поскольку renderInContext не отображает преобразования Core Animation, а UIGetScreenImage() не является общедоступным API, как вы хорошо заметили. Тот же вопрос был уже задавал на StackOverflow:

1) How do I create/render a UIImage from a 3D transformed UIImageView?

2) CALayer renderInContext

Если эта функция является ключом к вашему приложению, я хотел бы посмотреть в использовании вида OpenGL и захватив буфер цвета (который может отображаться вне экрана, если вы не хотите отображать его).

 Смежные вопросы

  • Нет связанных вопросов^_^