调整自动布局约束的大小

时间:2017-07-05 08:13:38

标签: ios iphone swift xcode autolayout

我在Xcode 8中开发了一个iOS应用程序。即使阅读了各种教程,我也无法理解自动布局限制。我试图找到哪些约束组合允许我在顶部布局指南和图像视图顶部之间有可调节的间距。

以下是iPhone 7 Plus上视图的预览:

iPhone 7 Plus演示

[1]

UIImageView的顶级约束目前设置为 = 50 ,这是大屏幕的完美尺寸。但是,我试图在较小的屏幕上缩小此间距,如下所示:

iPhone 4s演示

[2]

我尝试了各种约束的不同大小和优先级的所有可能组合,但所有屏幕上的间距要么很小,要么所有屏幕上的间距都很大。有什么我想念的吗?

3 个答案:

答案 0 :(得分:0)

您可以为不同的特征指定不同的约束。 您可以像下面这样做

override var traitCollection: UITraitCollection {
    let trait = super.traitCollection
    if view.bounds.size.height < 500 {
        return UITraitCollection(verticalSizeClass: UIUserInterfaceSizeClass.compact)
    }
    return trait
}
  • 覆盖特质收集
  • 选择约束
  • 在检查器
  • 中的约束的常量字段之前选择+按钮
  • 选择高度紧凑,宽度与任何
  • 相同
  • 它将为此约束创建另一个常量字段。
  • 指定较低的常量值

否则,您可以将该约束作为插座,并在代码中检查view.bounds.size.height&lt; some_value比使用较小的值作为约束的常量,否则为常规值

答案 1 :(得分:0)

您可以通过取topConstraint的出口更改与高度成比例的顶部间距,并在viewDidLoad方法中更改其值。 。在这里,您需要找到一个常数值,当它与设备的实际高度相乘时,会得到所需的顶部间距。假设你需要50英尺7+,屏幕尺寸为736p,因此常数为50/736 = 0.067。所以在4s内,间距可以是480 * 0.067 = 33。

你可以这样做

topspace.constant = self.view.frame.size.height * 0.067

答案 2 :(得分:0)

在尝试了上述想法之后,我找到了解决问题的方法,让我看到故事板中的变化。我将我的UIImageView放在首选位置(在iPhone 7+上)并在当前画布值处设置垂直对齐约束 - 然后我将此约束设置为优先级为750.

然后我在顶部布局指南中添加一个大于或等于10的顶部约束,优先级为1000.

在较大的屏幕上看到时,UIImageView朝向垂直对齐方向。在较小的屏幕上看时,垂直对齐将图像推到顶部,但优先级较高的顶部约束10将其保留在屏幕上。