我在水平居中的 UIStoryBoard
中插入了一个 UILabel
。但是当我在 iPhone 6 上运行它时它不在中心。为什么会发生这种情况以及我如何防止将来遇到同样的问题?
在 iPhone 5 等其他模拟器上运行良好。
最佳答案
iOS 设备有不同的分辨率,尤其是在 iPhone 6 和 iPhone 6 Plus 发布之后。因为 Storyboard只是应用程序界面的一般表示, Canvas 的大小实际上不类似于任何一个特定的屏幕大小。事实上,您可能会注意到默认 Canvas 有点像“正方形”。
因此,您不能期望您的 View 在模拟器或实际设备上看起来与在您的 Canvas 中完全一样,只需将它们全部放在您的 Canvas 中即可。要进行布局,您需要使用约束,这是一组明确告诉系统您希望如何定位 View 的规则。事实上,从 iOS 8 开始,Apple 鼓励开发人员利用自动布局
和尺寸等级
来开发适合任何尺寸屏幕的应用程序,甚至同时使用 iPhone 和 iPad。
在你的例子中,为了使用约束将标签放在屏幕的中央,只需 Control - 将你的标签拖到 Storyboard中的 super View :
在弹出窗口中,选择在容器中水平居中和在容器中垂直居中。您可以按住 Shift 一次选择多个约束。然后,在 Size Inspector 中,确保约束的常量为 0
。
请查看Apple's guide about using AutoLayout ,因为它是您将来开发 iOS 应用程序(或 OS X 应用程序)时将使用的主要布局机制。
关于iOS - iPhone 6 模拟器上的尺寸错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366638/