Является ли рендеринг представлений в UIImages правильным способом анимации в iPhone SDK?

Я использовал Core Plot, чтобы нарисовать несколько диаграмм для приложения iOS, которое я разрабатывал. В то время как основной график превосходен в качестве приложения для построения диаграмм, он снижает производительность, когда дело доходит до любого взаимодействия с пользователем. Чтобы обойти это, я начал делать следующее:

    UIGraphicsBeginImageContext(view.bounds.size);
    [view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

Затем я заменял представление на изображение представления перед запуском анимации, что делало их намного более плавными.

С тех пор я стал больше использовать эту идею в своем приложении. У меня не было большого опыта работы с iOS до этого проекта, и я действительно не просматривал много источников от более опытных разработчиков. Я просто хотел найти обратную связь - не упустил ли я смысл, приняв этот подход?


person johnw188    schedule 16.09.2010    source источник
comment
можете ли вы уточнить, что вы подразумеваете под «заменить представление на изображение представления ...»   -  person frankodwyer    schedule 23.10.2010
comment
Конечно. Я бы установил рамку изображения в рамку основного представления сюжета, а затем добавил изображение в качестве подпредставления суперпредставления основного представления сюжета. Затем я бы удалил основной вид сюжета из супервизора. Этот переход визуально плавный и позволяет анимировать изображение со скоростью 60 кадров в секунду в ситуациях, когда фактический переход занимает гораздо больше времени.   -  person johnw188    schedule 25.10.2010


Ответы (1)


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

person jer    schedule 16.09.2010
comment
Я предполагаю, что отсутствие смысла было плохим выбором слов. Думаю, я просто имел в виду, это тот код, над которым будут насмехаться опытные разработчики объективного c, говорящие, почему бы вам не использовать стандартный подход и не сделать x. Приятно видеть, что я не единственный, кто использует этот подход. - person johnw188; 17.09.2010
comment
Сам занимался этим 3 года, и только в редких случаях я издеваюсь над своим собственным кодом и продолжаю делать это в том же духе. :) - person jer; 17.09.2010