对于我正在编写的应用程序,我需要显示几个视图(在我的例子中是图像,但我想这不重要),其样式类似于iPad的Fotos应用程序中的图像显示方式。考虑一下这张图:
显然,在纵向视图上,每行幻灯片比风景视图更少。我现在想做的是:
在这里,我不确定什么是真正将幻灯片放到屏幕上的最佳方式。我最初打算循环它们并使用每一张幻灯片的框架将它们放到viewControllers视图中(然后我可以在每5次幻灯片之后进行计数并增加y值)。然而,如果我这样做,我恐怕我的观点将基本上只支持一个屏幕方向,因为我需要重放所有的幻灯片,如果方向改变,这似乎是浪费资源(?)
你将如何解决这个问题?是否有任何“溢出换行”功能,比如CSS (如果设置了float属性,并且父容器没有提供足够的空间,容器就会自动下降到下一行)?
我肯定不是第一个想到这一点的人:)
谢谢你的回答!
发布于 2010-07-22 23:22:07
在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 ivar。
是的,当屏幕方向发生变化时,您将需要重路由。要做到这一点,请使用如下方法:
- (void)layoutSubviews {
[super layoutSubviews];
[self layoutButtons];
}
这就叫你的布局代码。在我的例子中,是layoutButtons
。这在UIScrollView的子类中,所以当视图在自动调整后自动调整大小时,将调用layoutSubviews
方法。
如果您使用的是UIScrollView,请确保您也更新了self.contentSize ivar。
https://stackoverflow.com/questions/3314242
复制相似问题