我有一个支持横向和纵向观看的视图,当你从一个切换到另一个时,控件都会移动。我正在通过在用户旋转手机时设置每个控件的.center来实现此目的。问题是这很繁琐,并且需要大量代码,并且似乎首先破坏了使用Interface Builder的目的。
我的问题是:Interface Builder中是否有一种方法可以支持多个外观(一个用于纵向一个用于纵向)?如果没有其他人如何与IB这样做?你设置了2个视图吗?
编辑:为了澄清我的风景和肖像视图看起来不同,我不想直接变换,我实际上在横向模式下以不同方式显示数据
答案 0 :(得分:1)
必要时,我将UIView
个对象添加到IB隐藏的视图中。给它一个漂亮的背景颜色,这样你就可以看到它,并将它一直发送到背景。然后在需要设置对象的框架时使用该视图的框架。如果你有很多,你可以考虑使用UILabel
,所以你可以在IB中给它一个可见的名字。
如果您担心内存问题,请在UIView
中删除所有这些额外的ViewDidLoad
,并将其帧值存储在成员CGRect
中。这当然只能在旋转时自动调整大小或重新定位任何视图,在这种情况下你可能不应该这样做。我这样做是出于任何原因调整大小/重新定位,而不仅仅是在屏幕旋转时。
答案 1 :(得分:0)
我不是百分之百确定是否可能,但您是否考虑过使用不同的视图控制器来拍摄风景和肖像?
答案 2 :(得分:0)
IB的大小检查器(命令3)中的IBOutlet对象的AutoSize属性为自动拉伸和项目定位提供了一些非常好的选项。您可以控制L / R和T / B屏幕位置以及相对宽度和高度。您无法完全控制布局,但大多数基本操作都在那里。
答案 3 :(得分:0)
一个视图在IB中支持多个方向的唯一方法是将组件的自动调整遮罩设置为缩放和/或锚定到边缘。要为每个方向设计完全不同的布局,您需要分别设计纵向和横向视图(每个都在自己的XIB中),并以编程方式在它们之间切换。