8

我有一个支持横向和纵向查看的视图,当您从一个切换到另一个时,控件都会四处移动。我目前正在通过在用户旋转手机时设置每个控件的 .center 来执行此操作。问题是这很乏味,需要大量代码,而且似乎违背了使用 Interface Builder 的初衷。

我的问题是:Interface Builder 中有没有一种方法可以让一个视图支持多种外观(一种用于横向,一种用于纵向)?如果不是,其他人如何使用 IB 做到这一点?您是否设置了 2 个视图?

编辑:只是为了澄清我的横向和纵向视图看起来不同,我不想要直接变换,我实际上在横向模式下以不同方式显示数据

4

4 回答 4

1

必要时,我将UIView对象添加到我隐藏的 IB 视图中。给它一个漂亮的背景颜色,这样你就可以看到它,并将它一直发送到背景。然后在需要设置对象的框架时使用该视图的框架。如果你有很多,你可以考虑使用UILabel,这样你就可以在 IB 中给它一个可见的名字。

如果您担心内存问题,只需删除所有这些额外UIView的 sViewDidLoad并将它们的帧值存储在 member CGRects 中。这当然只有在您没有任何视图在旋转时自动调整大小或重新定位时才有效,在这种情况下您可能不应该这样做。我这样做是为了出于任何原因调整大小/重新定位,而不仅仅是在屏幕旋转时。

于 2008-12-30T18:32:57.230 回答
0

在 IB 中,一个视图可以支持多个方向的唯一方法是将组件的自动调整大小掩码设置为缩放和/或锚定到边缘。要为每个方向设计完全不同的布局,您需要分别设计纵向和横向视图(每个在其自己的 XIB 中)并以编程方式在它们之间切换。

于 2011-06-01T00:56:54.093 回答
0

我不是 100% 确定这是否可能,但是您是否考虑过使用不同的视图控制器来进行横向和纵向?

于 2008-10-27T04:25:34.953 回答
0

IB 的 Size Inspector(命令 3)中 IBOutlet 对象的 AutoSize 属性为项目的自动拉伸和定位提供了一些非常好的选项。您可以控制 L/R 和 T/B 屏幕位置以及相对宽度和高度。您无法完全控制布局,但大多数基本操作都在那里。

于 2009-06-25T22:23:01.937 回答