Сколько UIViews может отображаться одновременно на iOS, прежде чем столкнуться с проблемами производительности? - PullRequest
2 голосов
/ 21 декабря 2010

Я создаю игру для iPhone и использую UIView объекты для рисования спрайтов. Большую часть времени у меня нет проблем с производительностью. Однако, как только у меня появляется около 15-20 объектов на экране (и, возможно, 5 из них перемещаются), игра становится значительно медленнее, особенно на iPhone 3G. Частота кадров может снизиться до одного кадра в секунду.

Является ли это просто ограничением использования UIView объектов или iOS должна обрабатывать столько же UIView объектов на экране одновременно?

Чтобы изолировать проблему, я сделал рисование своих видов очень простым - рисование красного прямоугольника. drawRect вызывается только один раз за просмотр. Иерархия представления очень проста и поверхностна. Я использую CADisplayLink для обновления UIView местоположений в каждом кадре.

Там еще очень мало что происходит, поэтому я хотел бы услышать, имел ли кто-нибудь еще успех при использовании этого количества UIView объектов.

Ответы [ 3 ]

3 голосов
/ 22 декабря 2010

Если вы устанавливаете свойство opaque каждого вида на NO, имейте в виду, что это серьезно влияет на скорость отрисовки видов. Если ваши взгляды не прозрачны, вы должны оставить для этого параметра значение YES, которое используется по умолчанию.

3 голосов
/ 26 декабря 2010

Ключом к моим проблемам стало то, что на моем игровом контенте были надписи.Метки не являются непрозрачными, что, вероятно, было большой частью проблемы, как предположил phix23.

Первое, что имело большое значение, - это удаление меток в секунду, которые были над содержимым.Наличие ярлыка, который изменял содержимое в каждом кадре, вызывало значительное замедление.

У меня также был большой ярлык, который отображался поверх большей части игры и менял форму при повышении уровня.Оказалось, что нанесение этого ярлыка поверх всего также вызвало значительное замедление.

В ответ на мой оригинальный вопрос я обнаружил, что на iPhone 3G я могу поддерживать около 30-40 непрозрачных UIViews.на экране одновременно, с 2 или 3 непрозрачными видами также.Непрозрачные UIViews, которые изменяют размер, форму или местоположение, являются безусловно худшими, и даже один из них, который покрывает значительную часть экрана, может быстро вызвать проблемы.

0 голосов
/ 21 декабря 2010

для такого типа приложений вы должны использовать CoreGraphics / Quartz / OpenGL, но в любом случае я не думаю, что существует ограничение на такой низкий счет.Например, если у меня есть табличное представление с 9 строками и в каждой строке по 5 подпредставлений, оно все равно отображается достаточно быстро.Вы пытались использовать анимацию UIView для изменения положения в поле зрения?

удачи в изучении OpenGL;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...