2010-07-22 109 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

相关问题