iOS - iPhone 6 模拟器上的尺寸错误

标签 ios objective-c xcode constraints uistoryboard

我在水平居中的 UIStoryBoard 中插入了一个 UILabel。但是当我在 iPhone 6 上运行它时它不在中心。为什么会发生这种情况以及我如何防止将来遇到同样的问题?

screenshot1

screenshot2

在 iPhone 5 等其他模拟器上运行良好。

最佳答案

iOS 设备有不同的分辨率,尤其是在 iPhone 6 和 iPhone 6 Plus 发布之后。因为 Storyboard只是应用程序界面的一般表示, Canvas 的大小实际上类似于任何一个特定的屏幕大小。事实上,您可能会注意到默认 Canvas 有点像“正方形”。

因此,您不能期望您的 View 在模拟器或实际设备上看起来与在您的 Canvas 中完全一样,只需将它们全部放在您的 Canvas 中即可。要进行布局,您需要使用约束,这是一组明确告诉系统您希望如何定位 View 的规则。事实上,从 iOS 8 开始,Apple 鼓励开发人员利用自动布局尺寸等级 来开发适合任何尺寸屏幕的应用程序,甚至同时使用 iPhone 和 iPad。


在你的例子中,为了使用约束将标签放在屏幕的中央,只需 Control - 将你的标签拖到 Storyboard中的 super View :

enter image description here

在弹出窗口中,选择在容器中水平居中在容器中垂直居中。您可以按住 Shift 一次选择多个约束。然后,在 Size Inspector 中,确保约束的常量为 0

enter image description here


请查看Apple's guide about using AutoLayout ,因为它是您将来开发 iOS 应用程序(或 OS X 应用程序)时将使用的主要布局机制。

关于iOS - iPhone 6 模拟器上的尺寸错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30366638/

相关文章:

swift - 如何设置 Canvas 预览语言?

ios - 解析对象中的核心亮点

ios - 如何在选择 Swift 3.0 时缩放 UICollectionViewCell?

iphone - 如何在不公开的情况下访问类中的其他类成员(ivars)?

ios - 如何在 Objective-C 中转换以下 Swift 代码?

ios - iOS 8 启动图像是否必须具有 LaunchScreen.xib?

ios - 如何区分原型(prototype) UITableViewCells 中同一 View 的实例

ios - 取消或更改 iTunes Connect 应用程序更新详细信息

ios - 键盘来时,如何设置UITextView中的文本字段上下移动?

arrays - 在字典中创建键/值对时,Swift 强制将 Bool 强制转换为 Int 错误