如何使用当用户滚动到UIScrollView中的新页面时,UIPageControl会更新?
答案 0 :(得分:35)
我之前使用过它,似乎效果很好。务必将UIScrollView.delegate设置为self。
#pragma mark - UIScrollViewDelegate methods
- (void)scrollViewDidEndDecelerating:(UIScrollView *)sender {
uint page = sender.contentOffset.x / width;
[self.pageControl setCurrentPage:page];
}
答案 1 :(得分:5)
在您定义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;
答案 2 :(得分:2)
以下是Swift的这个答案的更新:
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
pageControl.currentPage = Int(myScrollView.contentOffset.x) / Int(myScrollView.frame.width)
}