Как сделать так, чтобы, когда пользователь прокручивается на новую страницу в UIScrollView, UIPageControl обновляет?
Как обновить UIPageControl, когда UIScrollView с PagingEnabled изменяет страницу?
Ответ 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)
}