需要情节提要元素在不同的 iPhone 型号中处于正确的位置并具有正确的大小

Posted

技术标签:

【中文标题】需要情节提要元素在不同的 iPhone 型号中处于正确的位置并具有正确的大小【英文标题】:Need storyboard elements to be in correct position and have correct size across different iPhone models 【发布时间】:2014-03-13 19:36:16 【问题描述】:

现在我的应用中有 2 个视图控制器。它们都使用 UIViews 和 UIButtons,我已经转到 Storyboard 中的 Size Inspector 并更改了它们的宽度和高度值,对于一些我什至更改了 X 和 Y 值。

在我的 iPhone 4s 上一切看起来都很完美,但我刚刚意识到我设置的这些值对于 iPhone 3 或 iPhone 5 等其他设备可能不正确。

这是我为其中一个 UIView 添加的值的示例:

    X:0 是:0 宽度:320 身高:568

这是我为我的一个 UIButtons 添加的值的示例,我希望它完全位于屏幕中间:

    X:139 Y: 224 宽度:41 身高:30

对于这些故事板元素在不同 iPhone 型号上看起来扭曲或放错位置以及位于屏幕的错误部分,我有什么需要担心的吗?我应该做一些不同的事情,比如以编程方式创建它们吗?

我只是想确保在应用发布后,在用户的 iPhone 上看起来对我的 iPhone 正确的东西不会看起来很糟糕,而且我要在一周后才能使用任何不同的 iPhone 型号。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

这就是自动布局的目的。我不会详细介绍它,因为还有很多其他帖子和信息来源,但是无论屏幕大小如何,您都可以轻松地将按钮始终居中。您还可以在界面生成器中完成所有这些操作。 如果您还没有阅读,这是一个好的开始:http://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

【讨论】:

【参考方案2】:

另一个比自动布局更容易理解的选项是自动调整大小蒙版,也称为“struts and springs”:

您可以在 Interface Builder 或代码中设置自动调整大小掩码(请参阅组件的 autoresizingMask 属性): Autoresizing masks programmatically vs Interface Builder / xib / nib

虽然支柱和弹簧不如 Autolayout 强大,但它们可以满足大多数情况的需求。我在应用商店中有三个应用,还不需要自动布局。

要使用“支柱和弹簧”,只需turn Autolayout off。

【讨论】:

感谢您的帮助。如果自动布局没有削减它,我会进一步检查。【参考方案3】:

如果您的自动布局属性设置得当,您可能没问题。如果您想以编程方式执行此操作,您可以使用如下方式:(将按钮置于中心)

customButton.center = customView.center;

如果你想让某个东西成为屏幕的大小,请执行以下操作

customView.bounds = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height;

【讨论】:

Autolayout 现在应该可以工作,但是一旦我在本周晚些时候在不同的模型上进行测试,我可能必须实现它。感谢您的帮助。 是的,如果你设置好自动布局,应该没问题!我只是对代码有个人偏好!祝你好运。

以上是关于需要情节提要元素在不同的 iPhone 型号中处于正确的位置并具有正确的大小的主要内容,如果未能解决你的问题,请参考以下文章

如何使用情节提要为不同的 iPhone 屏幕尺寸设置不同的字体尺寸?

XCODE:iPhone 12 的尺寸将如何影响约束和情节提要?

在情节提要中居中

如何在情节提要中使用自动布局在不同设备尺寸上设置动态位置的约束

在情节提要中更改 iphone 4 和 iphone 5 之间的背景图像?

在情节提要中更改“查看为:iPhone”时出现 UI 错误