2013-05-31 61 views
0

在uiscrollview中有三個不同的頁面視圖控制器用作視圖。帶頁面控件的UIScrollView僅顯示第三頁作爲當前頁面,但不顯示另外兩頁。 Pagecontrol也不可見。帶頁面控件的UIScrollView

- (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); 

} 

現在它只顯示pageThree。爲什麼不顯示pageOne和pageTwo。

爲什麼不顯示PageOne,pageTwo然後pageThree串聯。

感謝您的幫助。

回答

1

我的第一個答案解決了錯誤的事情...你只能看到第3頁,因爲所有的三個頁面都是相互疊加的。嘗試:

第1頁CGRectMake(0,0,320,420) 第2頁CGRectMake(320,0,320,420) PAGE3 CGRectMake(640,0,320,420)

然後他們將在滾動視圖彼此相鄰,而不是在頂部彼此。

+0

你是非常正確的。這是一個小問題,但我錯過了。都謝謝你。感謝你的幫助。 – user1120133

2

你正在將你的contentOffset除以每個頁面的寬度而不是每個頁面的寬度(我認爲會導致page1總是顯示不是page3)。其結果是,偏移第2頁爲320,滾動型的寬度爲960,和九百六十零分之三百二十〇是0.333

此外,因爲您啓用了分頁,應實現

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

並設置pageControl的currentPage,那樣你只能在每個頁面的邊緣而不是每個點之間調用它(不需要舍入)。

嘗試註釋掉你scrollViewDidScroll方法,而使用

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    [pageControl setCurrentPage:scrollView.contentOffset.x/320]; 
} 

在過去這一直爲我工作。

+0

此外,我從來沒有setNumberOfPages setCurrentPage ...可能無關緊要,但它可能會導致意想不到的結果? – Gallonallen

+0

嘗試過,但仍然是相同的輸出 – user1120133