Подтвердить что ты не робот

Как обновить UIPageControl, когда UIScrollView с PagingEnabled изменяет страницу?

Как сделать так, чтобы, когда пользователь прокручивается на новую страницу в UIScrollView, UIPageControl обновляет?

4b9b3361

Ответ 1

Я использовал это раньше и, похоже, хорошо работал. Обязательно настройте UIScrollView.delegate на себя.

#pragma mark - UIScrollViewDelegate methods

- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender {
    uint page = sender.contentOffset.x / width;
    [self.pageControl setCurrentPage:page];
}

Ответ 2

Если вы определили свой UIScrollView и UIPageControl, вы должны реализовать этот метод:

- (void)scrollViewDidScroll:(UIScrollView *)_scrollView
{
    if (pageControlIsChangingPage)
        return;

    CGFloat pageWidth = _scrollView.frame.size.width;
    int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;
}

и этот:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView 
{
    pageControlIsChangingPage = NO;
}

где pageControlIsChangingPage:

BOOL    pageControlIsChangingPage;

Ответ 3

Вот обновление этого ответа для Swift:

func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
            pageControl.currentPage = Int(myScrollView.contentOffset.x) / Int(myScrollView.frame.width)
        }