2009-11-16 11 views
6

używamCALayer renderInContext

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

To sukces, ale używam „renderInContext: kontekst” dostać CGImage z kontekstu, znalazłem efekt obrazu nie ulega zmianie!

Jak mogę uzyskać ten efekt z obrazu CALayer?

Odpowiedz

2

Moja oryginalna odpowiedź brzmi poniżej. To było ważne w momencie, kiedy je opublikowałem, ale Apple nie zezwala już na użycie UIGetScreenImage. Do mojej najlepszej wiedzy po uruchomieniu iOS4 nie ma alternatywy, jak czynią warstw z przekształceń 3D + aplikacja zostanie odrzucona, jeśli używasz UIGetScreenImage



Od docs deweloperem iPhone na renderInContext:

Dodatkowo, warstwy, które wykorzystują 3D transformacji nie są świadczone, nie są warstwy określające backgroundFilters, filtrów compositingFilter lub maska ​​ wartości.

Tak więc renderInContext nie jest funkcją, której należy użyć do renderowania warstwy, na której zastosowano transformację 3D.

Najlepsze co możesz zrobić, to zadzwonić: UIGetScreenImage, co w zasadzie daje zrzut ekranu, a następnie można wyodrębnić obraz z tego ekranu.

+2

UigetScreenImage jest niedozwolone. Właśnie dostałam wiadomość od Apple z prośbą o zaprzestanie używania tej prywatnej funkcji i użycie -renderInContext: (na iOs 3.x) lub AV Foundation AVCaptureSession i powiązanych klas (na iOS 4). – vfn

+0

Otrzymałem dzisiaj ten sam e-mail od Apple, a mój przypadek jest podobny do twojego. Najwyraźniej będziemy musieli pocałować się na pożegnanie wszystkim użytkownikom korzystającym z iOS3 lub pocałować na pożegnanie ... wszelkie myśli? – SpaceDog

+1

Wystarczająco zabawne dziś jedna z moich aplikacji została odrzucona również za używanie UIGetScreenImage() ... testowałem na iOS4, ale renderInContext STILL NIE renderuje transformacji 3D, więc ... szczerze mówiąc nie wiem, co jest najlepsze w tej chwili –

Powiązane problemy