2010-04-21 59 views
0

我想要實現一個ipad視圖,在這裏我解析一個xml文件並將這些條目放在一個「無盡的」ipad視圖上,所以你必須左右滑動。有人能告訴我,我可以如何實現這一點?我必須使用哪種類型的視圖?無盡的iPad刷卡?

在此先感謝

問候

回答

1

您使用的UIScrollView啓用了分頁。要點是將myscrollView.contentSize設置爲所有頁面的總寬度,但是在滾動正在發生時以恰好時間爲基礎創建單獨頁面(請參閱UIScrollViewDelegate文檔);換句話說,當你需要的只有三個視圖時,你不希望實際上有幾十個或更多視圖使用內存 - 當前視圖以及上一個視圖和下一個視圖。從蘋果此示例代碼應該讓你開始: http://developer.apple.com/iphone/library/samplecode/Scrolling/Introduction/Intro.html

2

使用一個真正的大contentSize是不是要走的路。 contentSize仍然使用固定的數據類型,如果你滾動的時間足夠長,它們會溢出,充其量,你的繪圖將會失去作用。最糟糕的情況是,你的應用程序崩潰。

你想要的是通過使用窗口給人無限滾動的印象。我將用一個簡單的1-D示例來說明它是如何工作的,但是您可以輕鬆將其擴展爲2-D。

比方說,您有3個條目,其中每個條目填充UIScrollView。向右滾動,它會出現被安排是這樣的:

A B C A B C A B C ... 

在內部,你會喜歡這個安排他們:

C A B C 

因爲當一個是可見的,你可以看到部分如果您向左滑動,則滑動到右側或B的一部分。

您的UIScrollViewcontentOffset是您的櫥窗。雖然contentSize包含所有四個實體(C A B C)的寬度,但在內部您將限制爲實際寬度的75%。當用戶向左和向右滾動時,您調整contentOffset,使其永遠不會爲負數或超過contentSize.width的75%。這是您的代理內部完成,在scrollViewDidScroll:

- (void) scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    while (scrollView.contentOffset.x < 0) 
     scrollView.contentOffset.x += constrainedContentSize.width; 
    while (scrollView.contentOffset.x > constrainedContentSize.width) 
     scrollView.contentOffset.x -= constrainedContentSize.width; 

    // ... 
} 

注意,這裏假設一個實例變量constrainedContentSize,可能在控制器,你UIScrollView是裏面的觀點,並認爲該控制器是你UIScrollView委託。

這將比不斷髮布和重新創建視圖效率更高。