Iphone 带页面控件的UIScrollView
在uiscrollview中使用三个不同的页面视图控制器作为视图。带有pagecontrol的UIScrollView仅显示第三个页面作为当前页面,但不显示其他两个页面。Pagecontrol也不可见Iphone 带页面控件的UIScrollView,iphone,ios6,uiscrollview,uipagecontrol,Iphone,Ios6,Uiscrollview,Uipagecontrol,在uiscrollview中使用三个不同的页面视图控制器作为视图。带有pagecontrol的UIScrollView仅显示第三个页面作为当前页面,但不显示其他两个页面。Pagecontrol也不可见 - (void)viewDidLoad { [super viewDidLoad]; PageOne *pageOne = [[PageOne alloc] init]; pageOne.view.frame = CGRectMake(0, 0, 320, 420); PageTwo *pag
- (void)viewDidLoad
{
[super viewDidLoad];
PageOne *pageOne = [[PageOne alloc] init];
pageOne.view.frame = CGRectMake(0, 0, 320, 420);
PageTwo *pageTwo = [[PageTwo alloc]init];
pageTwo.view.frame = CGRectMake(0, 0, 320, 420);
PageThree *pageThree = [[PageThree alloc] init];
pageThree.view.frame = CGRectMake(0, 0, 320, 420);
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[scrollView setContentSize:CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height)];
[scrollView setDelegate:self];
[scrollView setPagingEnabled:YES];
[scrollView setShowsHorizontalScrollIndicator:YES];
[scrollView addSubview:pageOne.view];
[scrollView addSubview:pageTwo.view];
[scrollView addSubview:pageThree.view];
[self.view addSubview:scrollView];
_pageControl = [[UIPageControl alloc] init];
[_pageControl setCurrentPage:0];
[_pageControl setNumberOfPages:3];
[_pageControl sizeToFit];
[_pageControl setFrame:CGRectMake((scrollView.frame.size.width / 2) - (_pageControl.frame.size.width / 2), scrollView.frame.size.height - _pageControl.frame.size.height, _pageControl.frame.size.width, _pageControl.frame.size.height)];
[self.view addSubview:self.pageControl];
[super viewDidLoad];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
_pageControl.currentPage = lround(scrollView.contentOffset.x / scrollView.frame.size.width);
}
现在它只显示第三页。为什么不显示第一页和第二页呢
为什么不依次显示第一页、第二页和第三页呢
谢谢您的帮助。您正在将contentOffset除以滚动视图的全宽,而不是每页的宽度(我原以为这会导致page1始终显示而不是page3)。结果是page2的偏移量为320,滚动视图的宽度为960,320/960为0.333 此外,由于已启用分页,因此应该实现
-(无效)ScrollViewDiEndDecelling:(UIScrollView*)scrollView
并在那里设置pageControl的currentPage,这样您将只在每个页面的边缘精确调用它,而不是在页面之间的每个点调用它(无需舍入)
尝试注释您的scrollViewDidScroll方法,并改用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[pageControl setCurrentPage:scrollView.contentOffset.x/320];
}
这在过去一直适用于我。您将内容偏移量除以滚动视图的全宽,而不是每页的宽度(我认为这会导致第1页始终显示而不是第3页)。结果是page2的偏移量为320,滚动视图的宽度为960,320/960为0.333 此外,由于已启用分页,因此应该实现
-(无效)ScrollViewDiEndDecelling:(UIScrollView*)scrollView
并在那里设置pageControl的currentPage,这样您将只在每个页面的边缘精确调用它,而不是在页面之间的每个点调用它(无需舍入)
尝试注释您的scrollViewDidScroll方法,并改用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[pageControl setCurrentPage:scrollView.contentOffset.x/320];
}
这在过去一直适用于我。我的第一个答案指出了错误的地方……你只能看到第3页,因为这三页都是在彼此的上面添加的。尝试: 第1页CGRectMake(0,0320420) 第2页CGRectMake(320,0320420) 第3页CGRectMake(640,0320420)
然后,它们将在滚动视图中彼此相邻,而不是在彼此的顶部。我的第一个回答回答了错误的问题……您只能看到第3页,因为所有三个页面都是在彼此的顶部添加的。尝试: 第1页CGRectMake(0,0320420) 第2页CGRectMake(320,0320420) 第3页CGRectMake(640,0320420)
然后它们将在滚动视图中彼此相邻,而不是彼此重叠。此外,我从未在setNumberOfPages之前设置CurrentPage…可能不重要,但可能会导致意外结果?此外,我从未在setNumberOfPages之前设置CurrentPage…可能不重要,但这可能会导致意想不到的结果?你说得很对。这是一个很小的问题,但我错过了。谢谢你。谢谢你的帮助,你说得很对。这是一个很小的问题,但我错过了。谢谢你。谢谢你的帮助。