首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iPad上显示图像/幻灯片/容器的最佳方法是什么?

在iPad上显示图像/幻灯片/容器的最佳方法是什么?
EN

Stack Overflow用户
提问于 2010-07-22 23:09:24
回答 1查看 290关注 0票数 0

对于我正在编写的应用程序,我需要显示几个视图(在我的例子中是图像,但我想这不重要),其样式类似于iPad的Fotos应用程序中的图像显示方式。考虑一下这张图:

显然,在纵向视图上,每行幻灯片比风景视图更少。我现在想做的是:

  • 通过使用滑动动画
  • 来动画添加每一张幻灯片,我已经有了一个表示幻灯片的UIView子类,它可以根据我需要的方式来响应。

在这里,我不确定什么是真正将幻灯片放到屏幕上的最佳方式。我最初打算循环它们并使用每一张幻灯片的框架将它们放到viewControllers视图中(然后我可以在每5次幻灯片之后进行计数并增加y值)。然而,如果我这样做,我恐怕我的观点将基本上只支持一个屏幕方向,因为我需要重放所有的幻灯片,如果方向改变,这似乎是浪费资源(?)

你将如何解决这个问题?是否有任何“溢出换行”功能,比如CSS (如果设置了float属性,并且父容器没有提供足够的空间,容器就会自动下降到下一行)?

我肯定不是第一个想到这一点的人:)

谢谢你的回答!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-07-22 23:22:07

在Cocoa中没有“溢出上的行间隔”设置。如果你想做一些这样的事情,你需要写一些代码来展示幻灯片。下面是我用来做这件事的代码示例:

代码语言:javascript
运行
复制
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。

是的,当屏幕方向发生变化时,您将需要重路由。要做到这一点,请使用如下方法:

代码语言:javascript
运行
复制
- (void)layoutSubviews {
    [super layoutSubviews];
    [self layoutButtons];
}

这就叫你的布局代码。在我的例子中,是layoutButtons。这在UIScrollView的子类中,所以当视图在自动调整后自动调整大小时,将调用layoutSubviews方法。

如果您使用的是UIScrollView,请确保您也更新了self.contentSize ivar。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3314242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档