2010-07-22 47 views
0

對於我正在編寫的應用程序,我需要以類似於圖片在iPad的Fotos應用程序中顯示的方式顯示多個視圖(在我的情況下爲圖片,但我想這應該不重要)。顯然在iPad上顯示圖像/幻燈片/容器的最佳方式是什麼?

alt text http://img25.imageshack.us/img25/4338/slides.jpg

上縱向視圖中較少的幻燈片可以適應每行比橫向視圖:考慮這個圖形。我有什麼/想現在要做的:

  • 動畫用滑動動畫
  • 每增加一個幻燈片的我已經有一個表示幻燈片和響應觸動我需要它的方式UIView子類。

我不確定是什麼是實際將幻燈片放到屏幕上的最佳方式。我最初只是循環遍歷它們,並使用每張幻燈片的Frame將它們放到viewControllers視圖中(然後我可以在每5張幻燈片之後進行計數並增加y值)。但如果我這樣做,我擔心我的觀點基本上只支持一個屏幕方向,因爲如果方向改變,我需要重新佈置所有的幻燈片,這對我來說似乎是一種浪費資源(?)。

你會如何解決這個問題?是否有任何「溢出換行」的能力,比如使用CSS(如果float屬性被設置並且父容器沒有提供足夠的空間,容器會自動下降到下一行)?

我肯定不是第一人思考這個問題:)

謝謝您的回答!

回答

1

Cocoa中沒有「溢出換行符」設置。如果你想做出這樣的事情,你需要編寫代碼來製作幻燈片。這裏是我用來做到這一點的代碼示例:

CGRect frame = CGRectMake(margins.left, margins.top, cellSize.width, cellSize.height); 
for (UIButton *button in self.buttons) { 
    button.frame = frame; 

    // Move frame to next position 
    frame.origin.x += cellSize.width + cellSpacing; 
    if (frame.origin.x + frame.size.width > margins.left + contentWidth) { 
     frame.origin.x = leftMargin; 
     frame.origin.y += cellSize.height + cellSpacing; 
    } 
} 

我對每個圖像使用UIButtons,因此self.buttons伊娃。

是的,當屏幕方向改變時,您將需要重新佈局。要做到這一點,有這樣的方法:

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    [self layoutButtons]; 
} 

它調用你的佈局代碼。在我的情況下,它是layoutButtons。這是UIScrollView的一個子類,所以當視圖在自動旋轉後自動調整大小時,將調用layoutSubviews方法。

如果您使用UIScrollView,請確保您更新self.contentSize伊娃。

+0

感謝您的示例代碼,能夠學習其他代碼總是很棒的 – Robin 2010-07-23 06:31:41

相關問題