应用程序在 iPhone 6 上看起来不错,但在其他设备上却一团糟,即使有限制

Posted

技术标签:

【中文标题】应用程序在 iPhone 6 上看起来不错,但在其他设备上却一团糟,即使有限制【英文标题】:App looks fine on iPhone 6, but total mess on other devices, even with constraints 【发布时间】:2017-05-29 14:13:39 【问题描述】:

正如标题所说,我的应用在 iPhone 6 上看起来很棒,这是我编写代码的设备(实际设备,而不是模拟器),但是当我在其他设备上打开应用时,比如 iPad Air2 模拟器或 iPhone 7s模拟器,应用程序一团糟。所有的子视图都网格在一起。

在我的代码中,我以编程方式放置具有以下约束格式的子视图:

view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-20-[v0]-230-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": userIdLabel]))

view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-130-[v0]-510-|", options: NSLayoutFormatOptions(), metrics: nil, views: ["v0": userIdLabel]))

根据我对约束的理解,如果您使用约束来放置子视图,那么它们将在不同设备上保持相同的位置。但是,我开始觉得我误解了约束的概念。

关于约束,你们能帮我指出正确的方向吗?

非常感谢您的帮助。

【问题讨论】:

从你所说的很难猜到,但是在应用程序运行时尝试使用 Xcode 的视图调试功能。它可以向您显示有效的约束,以帮助诊断事物为何会出现在它们所在的位置。 【参考方案1】:

是的,您误解了约束的概念。为约束提供常量值不会使应用在不同设备上看起来相同。为此,您应该简单地考虑当前设备的 w/h,然后按一定比例按比例调整应用的视图。

还请看看这些: Autolayout views always same size on different screen sizes

How to use autolayout to scale view for all screen sizes?

How to handle iPhone 4s, 5 and 6 screen size, and make all the contents look the same across al the devices

教程: https://www.raywenderlich.com/115440/auto-layout-tutorial-in-ios-9-part-1-getting-started-2

【讨论】:

以上是关于应用程序在 iPhone 6 上看起来不错,但在其他设备上却一团糟,即使有限制的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 图像在 IB 中看起来不错,但在应用程序上显示时会被拉伸

字体在 iPhone X 中看起来很混乱,而在 iPhone 7 中看起来不错

适用于 Iphone 6 和 Iphone 6 plus 的媒体 CSS

Xcode 约束问题

应用程序不适合 iPhone 4

Xcode 6 自动布局灵活宽度