У меня есть представление прокрутки, и я реализую lazyload с контролем страницыЯ взял образец программы pagecontrol от apple.
Я загружаю 8 миниатюр на каждой странице, а сами миниатюры извлекаются из сети и обновляются в пользовательском интерфейсе.Представления изображений уже присутствуют в пользовательском интерфейсе.В моем методе viewDidScroll я вычисляю номер страницы, а затем обновляю другие страницы выше и ниже, как показано ниже:
BOOL isScrollingDown = verticalScrollView.contentOffset.y > _previousContentOffsetY;
_previousContentOffsetY = verticalScrollView.contentOffset.y;
CGFloat pageHeight = verticalScrollView.frame.size.height;
int scrollingToPageNum = isScrollingDown ? (ceil((verticalScrollView.contentOffset.y - pageHeight) / pageHeight) + 1) : (floor((verticalScrollView.contentOffset.y - pageHeight) / pageHeight) + 1);
int page = floor((verticalScrollView.contentOffset.y - pageHeight / 2) / pageHeight) + 1;
[self loadPage:(page-1)];
[self loadPage:(page)];
[self loadPage:(page+1)];
/* Unloading the pages not seen in the view is done here*/
if (!(isScrollingDown) && scrollingToPageNum >1) {
[self unloadPages:page-2];
}else {
[self unloadPages:page+2];
}
Интерфейс пользователя слишком медленный, а пользовательский интерфейс очень плохой.Я хочу знать, как я могу сделать пользовательский интерфейс более отзывчивым.
Некоторые другие вопросы: 1) У меня есть класс, который загружает изображения, и вызывающий класс реализует делегат для класса загрузчика.Как только изображение загружено, вызывается метод делегата для обновления пользовательского интерфейса.Замедляет ли это отзывчивость интерфейса?Как этого можно избежать?2) Каков оптимальный способ осуществления загрузки изображений и обновления пользовательского интерфейса, при котором пользовательский интерфейс перестает отвечать на запросы?
РЕДАКТИРОВАТЬ: я открыт для идей о том, как лучше всего улучшить и внедрить это решение.Я не создаю поток явно, но я использую NSURLConnection в асинхронном режиме, и когда данные извлекаются, вызывается метод делегата для обновления пользовательского интерфейса.