如何指定我希望 UI 元素在 Interface Builder 中进行方向更改的位置?

Posted

技术标签:

【中文标题】如何指定我希望 UI 元素在 Interface Builder 中进行方向更改的位置?【英文标题】:How can I specify where I want my UI elements to go on orientation change in Interface Builder? 【发布时间】:2010-12-20 17:10:25 【问题描述】:

好的,所以我知道这是一个新手问题,但我是新手,没关系!我认为我正在努力使 IB 中的定向友好,但我遇到了一些困难。

当然,我在纵向上看起来一切都很好,但是当我进入横向模式(通过点击右上角的那个箭头)时,一切都变得一团糟。

现在,由于视图的布局方式,我需要将 3 个按钮沿图像视图的底部纵向对齐,然后在横向中,这三个按钮需要沿右侧对称对齐。

在尺寸检查器中摆弄那些红色箭头的组合不会奖励我正在寻找的结果。是否可以在 IB 中以一种方向以一种方式设置按钮,然后在更改时将它们设置完全不同?

我四处寻找有用的 IB 教程,但一无所获。

【问题讨论】:

【参考方案1】:

我知道您想在 IB 中执行此操作,但如果您愿意以编程方式进行尝试,那么您可以很容易地进行操作。对于您的按钮,只需像这样实现 setCenter 方法:

[myButton setCenter:CGPointMake(xCenter,yCenter)];

否则,如果您想使用 IB,请使用 Autosizing 选项。箭头将拉伸或压缩宽度和高度,条形 (|-|) 保留与顶部和底部的距离。如果您连续有三个按钮,则可以固定左侧按钮的左侧距离,右侧按钮的右侧距离以及中间按钮的两者/都不固定。类似的东西可能会奏效。

第三个选项是创建一个新视图,将其称为 LandscapeView 或其他东西,方法是将 UIView 从库中拖到带有文件所有者、第一响应者、视图等的窗口。然后将其定向为横向,复制所有UI 对象,随心所欲地布置它们,当你旋转时,用 LandscapeView 替换当前视图。我发现的问题(其中之一)是您必须重新连接所有内容并为标签和诸如此类的东西使用不同的 IBOutlets。 T

【讨论】:

【参考方案2】:

使用 IB 的自动调整大小功能只能做这么多。 PengOne 在第二段中很好地描述了它们。如果它们还不够,您必须以编程方式移动元素。见Responding to Orientation Changes。否则,您可以使用完全不同的视图,再次如 PengOne 所述。

【讨论】:

以上是关于如何指定我希望 UI 元素在 Interface Builder 中进行方向更改的位置?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用主 iPhone 视图之外的 UI 元素在 Interface Builder 中设置 UIScrollView?

如何像 Interface Builder 一样调整 iOS UI 组件的大小

在我看来,iOS 项目未显示从 Interface Builder 构建的 Interface 元素

如何等到 Selenium 中不再存在元素

如何在 onLayout 期间调整 Android UI 元素的大小?

如何剪辑图像(UI 元素)以采样几何?