Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 带页面控件的UIScrollView_Iphone_Ios6_Uiscrollview_Uipagecontrol - Fatal编程技术网

Iphone 带页面控件的UIScrollView

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

在uiscrollview中使用三个不同的页面视图控制器作为视图。带有pagecontrol的UIScrollView仅显示第三个页面作为当前页面,但不显示其他两个页面。Pagecontrol也不可见

- (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…可能不重要,但这可能会导致意想不到的结果?你说得很对。这是一个很小的问题,但我错过了。谢谢你。谢谢你的帮助,你说得很对。这是一个很小的问题,但我错过了。谢谢你。谢谢你的帮助。