Стратегия ленивой загрузки изображений для кнопок в UIScrollView? - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть горизонтальный UIScrollView, который содержит кнопки UIB (хотя это может быть любой объект). Я хотел бы только загружать изображения для этих кнопок, когда пользователь прокручивает их, и они видны. Я также хотел бы, чтобы индикатор активности работал на каждой кнопке во время загрузки изображений. Вот что я попробовал с результатами:

  1. Проверьте смещение содержимого uiscrollview и загрузите изображения для видимых кнопок. Проблема: проблемы с отображением вида активности в подклассе UIButton и нежелательного удобства использования, поскольку изображения загружаются только после остановки прокрутки.

  2. Добавить подпредставления (не кнопки) в UIScrollview, надеясь использовать ViewController представления, чтобы инициировать загрузку в viewDidAppear. Проблема: viewDidAppear никогда не вызывается (потому что я использую addSubView?).

Я видел другие приложения, которые выполняют такую ​​загрузку, но нуждаются в руководстве по типовой настройке. Приложение Ebay является отличным примером. Все элементы имеют изображение по умолчанию до тех пор, пока они не появятся, затем запускается индикатор активности и загружается уникальное изображение элементов.

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2010

На самом деле, не пытаясь это сделать, вот моя идея:

Вы можете использовать UIScrollViewDelegate метод scrollViewDidScroll: чтобы узнать, когда прокручивается представление прокрутки, а затем используйте [UIScrollView contentOffset], чтобы определить, какая часть вида прокрутки видна, и (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view, чтобы определить положение кнопки в видимая часть представления прокрутки. Иметь метод, который проверяет, загружено ли еще изображение кнопки, и если нет, загрузите его и при необходимости обновите представление.

0 голосов
/ 17 апреля 2010

Большинство таких приложений используют UITableView, а не простое представление прокрутки. Фреймворк Three20 Джо Хьюитта имеет класс TTImageView, который может выполнять ленивую загрузку изображений, и очень хорошо подходит для такого использования.

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