我搜索并搜索了一个教程,但这些都不是我想要的。我试过Apple的样本,但它只是颜色,我不知道如何使它的观点。我正在寻找的是一个屏幕,在显示页面控件时会翻页。每次滚动视图页面我希望它显示完全不同的视图。不同的文字或图像,但不同的视图。很像iPhone的主屏幕或ESPN Scorecenter应用程序。请帮忙! 谢谢。
答案 0 :(得分:16)
我创建了这个通用的解决方案,因为发现的例子很复杂,这对我来说是可读的,代码应该是自我解释的。
- (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));
}
答案 1 :(得分:14)
这与@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));
}
}
答案 2 :(得分:4)
尝试使用此框架:https://github.com/AdrianFlorian/AFImageViewer使用页面控件在滚动视图中显示图像以指示当前页面。
我还没有添加文档,但是如果克隆项目,可以看到示例。
您可以轻松地: - 通过仅提供一系列网址(图片网址)从单独的线程中下载互联网上的图像 - 给它一个UIImage对象数组 - 实现委托并自己管理每个页面的图像
答案 3 :(得分:1)
有一个相关的问题:How do I use UIPageControl to create multiple views?,这个博客文章中解释了一个非常好的方法:http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html。
答案 4 :(得分:1)
我为这个问题制作了一个演示项目。请拜访: https://github.com/lenhhoxung86/PageControlDemo