2010-07-31 47 views
6

我試圖使頁面UIScrollView同時顯示多個頁面,實際上使頁面大小小於UIScrollview的界限。我一直在Google上搜索幾個小時,但似乎沒有一個好的解決方案。UIScrollView具有多個頁面可見或較小的頁面大小

我能夠通過施膠UIScrollview我想要一個頁面是規模,關閉子視圖的剪裁,並把它所有的水龍頭傳遞到UIScrollview容器內視覺上得到正確的效果。問題在於,在Y頁面可見的情況下,它可以讓您將最後一頁滾動到最左邊,並在最後一頁之後留下Y-1空頁面。任何人都知道解決這個問題,或解決問題的另一種方法?

+0

當用戶在您的頁面上滑動時,是否想要滑動一個較小的值,然後scrollView的寬度?首先顯示第1,2,3頁,然後刷2,3,4?或者4,5,6會在刷卡後顯示? – tonklon 2010-07-31 08:36:45

+0

我希望它像一個正常的滾動視圖一樣行動,滾動應該是手指移動的1:1,但是當手指被移除時它會鎖定在頁面上。 – Seventoes 2010-08-04 21:37:31

回答

6

對於右端,請嘗試減小滾動視圖的屬性的寬度,以使滾動視圖在到達最後一頁之前停止分頁。 對於左端,將每頁的frame.origin.x屬性減少相同的數量。前幾頁在滾動視圖中會有一個負x位置。

本質上,使滾動視圖認爲它的內容只是第2頁到第2頁。

例如:

// scrollView has been initialized and added to the view hierarchy according to the link in @richard's answer: 
// http://blog.proculo.de/archives/180-Paging-enabled-UIScrollView-With-Previews.html 

CGFloat pageNum=10; 
CGFloat pageWidth=scrollView.frame.size.width; 
CGFloat pageHeight=scrollView.frame.size.height; 
CGFloat visibleWidth=320; 


// Set scrollView contentSize and create pages: 

CGFloat leftShift=floor(((visibleWidth-pageWidth)/2)/pageWidth)*pageWidth; 
CGFloat contentSizeReduction=2*leftShift; 

scrollView.contentSize = CGSizeMake(pageNum*pageWidth-contentSizeReduction,pageHeight); 

for(int i=0; i<pageNum; i++) { 
    CGRect pageFrame = CGRectMake(i*pageWidth-leftShift, 0, pageWidth, pageHeight); 
    UIView *pageView = [[[UIView alloc] initWithFrame:pageFrame] autorelease]; 

    // Initialize the page view for the current index here 

    [scrollView addSubview:pageView]; 
} 

原諒代碼中的任何拼寫錯誤。我自己還沒有嘗試過。

讓我知道它是否有效。

7

我認爲你需要類似safari移動瀏覽器中的預覽。這是一個帶有一些示例代碼的網站。 Preview Sample Code