Как вы комбинируете UIScrollview с UIPagecontrol, чтобы показать разные представления? - PullRequest
9 голосов
/ 20 августа 2010

Я искал и искал учебник для этого, но ни один из них не является тем, что я ищу. Я попробовал образец Apple, но это всего лишь цвета, и я не знаю, как заставить его смотреть. Все, что я ищу, - это экран, на котором будет отображаться страница с отображением элемента управления страницы. Каждый раз при просмотре страниц прокрутки я хочу, чтобы он показывал совершенно другой вид. Не другой текст или изображения, но другой взгляд. Очень похоже на домашний экран приложения iPhone или ESPN Scorecenter. Пожалуйста помоги! Спасибо.

Ответы [ 5 ]

16 голосов
/ 09 января 2013

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

- (IBAction)changePage:(id)sender {
    _pageControlUsed = YES;
    CGFloat pageWidth = _scrollView.contentSize.width /_pageControl.numberOfPages;
    CGFloat x = _pageControl.currentPage * pageWidth;
    [_scrollView scrollRectToVisible:CGRectMake(x, 0, pageWidth, _scrollView.frame.size.height) animated:YES];
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    _pageControlUsed = NO;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (!_pageControlUsed)
            _pageControl.currentPage = lround(_scrollView.contentOffset.x /
            (_scrollView.contentSize.width / _pageControl.numberOfPages));
}
14 голосов
/ 07 февраля 2014

То же самое, что и ответ @ReneDohan, без необходимости хранить переменную в состоянии

- (IBAction)changePage:(id)sender {
    CGFloat x = self.pageControl.currentPage * self.scrollView.frame.size.width;
    [self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES];
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.isDragging || scrollView.isDecelerating){
        self.pageControl.currentPage = lround(self.scrollView.contentOffset.x / (self.scrollView.contentSize.width / self.pageControl.numberOfPages));
    }
}
4 голосов
/ 12 мая 2012

Попробуйте эту структуру: https://github.com/AdrianFlorian/AFImageViewer, чтобы представить изображения в виде прокрутки, используя элемент управления страницы, чтобы указать текущую страницу.

Я еще не добавил документацию, но вы можете увидеть примеры, если клонируете проект.

Вы можете легко: - загружать изображения из Интернета в отдельном потоке, предоставляя только массив URL-адресов (URL-адреса изображений) - дать ему массив объектов UIImage - реализовать делегат и управлять изображением для каждой страницы самостоятельно

1 голос
/ 20 марта 2014

Я сделал демонстрационный проект для этого вопроса.Пожалуйста, посетите: https://github.com/lenhhoxung86/PageControlDemo

1 голос
/ 05 октября 2010

Есть связанный вопрос: Как использовать UIPageControl для создания нескольких представлений? , действительно хороший способ сделать это объясняется в этом сообщении в блоге: http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html.

...