Переключение между переходами представления становится неуклюжим при использовании UIPickerViews с большим количеством элементов - PullRequest
0 голосов
/ 26 марта 2010

У меня очень простое приложение, созданное с помощью шаблона проекта Utility Application в XCode.Мой MainView имеет два компонента UIPickerView и две кнопки.FlipSideView имеет другой UIPickerView.

Каждый из сборщиков на главном экране имеет 4 сегмента, а каждый сегмент имеет 8 строк.Сборщик на оборотной стороне имеет всего 1 сегмент с 8 рядами.Все строки во всех средствах выбора - просто текст.

При такой настройке нажатие кнопки для переворачивания вида назад и вперед отображает заметную задержку перед тем, как анимация фактически запускается, и затем анимация, кажется, идет быстрее, чемчто он должен, как он пытается наверстать упущенное время.

Я удалил средства выбора в конструкторе интерфейсов и загрузил приложение на телефон, и анимация теперь кажется естественной.Я также попробовал только один сборщик (оборотная сторона), и все еще кажется нормальным.Итак, моя текущая теория заключается в том, что причиной является количество объектов, вовлеченных в основной вид.Дело в том, что я не думаю, что это так много (4 х 8 х 2 = 64), но я могу ошибаться.Это в значительной степени мое первое приложение, так что, возможно, я просто делаю что-то неправильно, или, возможно, телефон имеет гораздо более ограниченную обработку, чем я думал.

Я подумываю о создании представлений средства выбора с помощью pickerView: viewForRow: forComponent: reusingView: чтобы увидеть, будет ли это работать лучше, но я не уверен, что это пустая трата времени.

Есть предложения?

Спасибо, Руй

PS: тестирование на телефоне 3G на 3.1.2

1 Ответ

0 голосов
/ 26 марта 2010

Количество строк и компонентов мало влияет на производительность самого представления выбора. Представления выбора работают как таблицы, у них фактически нет количества компонентов и строк в памяти. Вместо этого они заменяют и повторно используют одну и ту же горстку представлений, отображаемых на экране в любое время. Таким образом, если у вас есть 4 компонента, каждый из которых отображает 5 строк одновременно, представление выбора никогда не будет содержать более 20 представлений, даже если в каждом компоненте есть сотни логических строк.

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

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

...