Раньше, чтоб сохранить содержимое UIImageView, я пользовался функцией типа:
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
она записывала все свои слои с примененными(которые были CGAffineTransform) преобразованиями и небыло никаких проблем.
Но когда я перешел на более сложные трансформации и начал работать со структурой UIView.layer.transform (это CATransform3D ), неожиданно столкнулся с огромной проблемой.
Весь renderInContext: и похожие на него полностью игнорируют преобразования CATransform3D. Все найденные ресурсы, и даже документация, посылают на х.. недавно разрешенный метод private API UIGetScreenImage(), которая тупо делает скриншот экрана. И к тому же работает медленно...
Может кто-нить знает возможность как все-таки по-хорошему решить эту проблему(Все таки отрендить с учетом CATransform3D)?
Мне нужно сохранить картинку и ее sublayers в Галлерею ( т.е. в UIImage* ).
Если таки нельзя сделать по-хорошему, то я вижу 2 возможных решения:
1. UIGetScreenImage() - но она делает скрин прямо в текущий момент(в моей функции нажатия кнопки), я не успеваю спрятать все GUI элементы (а точнее оно не успевает перерисовать экран со спрятанными элементами).
2. Отрендить OpenGLES все слои руками, и перевести контекст в UIImage - но я не могу найти (и не очень уверен в возможности) примера, где создался бы GL Render на 2 секунды, отрендился (и я не сильно понимаю куда бы лучше все это рендить, я работал только с экраном), и не знаю как сохранить результат мне.
Буду благодарен за любую помощь. Спасибо.
Сам столкнулся с похожей проблемой, когда в сделанном на коленке движке с использованием CATransform3D аффинных преобразований нельзя было отрендерить кадр в бэкбуфер сохранив эти самые преобразования. После долгих поисков пришел к выводу, что раз в официальной библиотеке нет поддержки такого вот, то и пытаться изобретать велосипед не стоит.
Конкретных решений не подскажу, просто увидел похожую на свою проблему и решил поделиться отрицательным опытом :)
p.s. В долгосрочной перспективе освоение OpenGLES это большой плюс по сравнению с поиском быстрого решения. Пусть займет больше времени, но пригодится потом неоднократно.
p.p.s Мануалы вроде бы не посылают - там где-то было черным по белому написано, что в данный момент аффинные преобразования игнорируются.
dig
спасибо, чужой опыт мне был интересен
Тема в архиве.