如何在每台设备上调整约束大小?

时间:2017-03-22 13:31:17

标签: ios swift xcode layout constraints

我需要在每个设备上登录,如下图所示,我尝试将约束设置为图像,文本字段和按钮,但它在所有设备上看起来都不一样,所以问题是如何设置约束取决于设备,图像和字段会在每个设备上调整大小?我在故事板上工作

enter image description here

3 个答案:

答案 0 :(得分:4)

考虑到你通过Storybaord处理约束(对我来说,在大多数情况下我更喜欢这样做),当组件大小必须与屏幕大小相关时,它的高度/宽度约束应该根据它们的< em>多人值。

为清楚起见,请考虑以下示例:

这是给定的场景:

enter image description here

黑色和蓝色视图尺寸均为:(width: 187.5, height: 66.5),但有一点,黑色视图宽度/高度约束基于常量值:

enter image description here

但蓝色约束基于多人值:

enter image description here

正如你所看到的,两个限制都在说:&#34;比例为:Superview&#34;意思是他们的价值观成比例地基于超级观点的价值。通过选择宽度视图 - 例如 - :

enter image description here

请注意,Multiplayer值为0.5,这意味着此视图(蓝色视图)宽度将是superview宽度的一半大小,无论superview&的值是多少? #39;宽度。

如何添加此约束?

  • 选择所需的视图。
  • ctrl +拖动到superview
  • 选择&#34;等宽&#34;选项。

目前,它应该类似于:

enter image description here

选择约束并将其Multiplayer值(来自尺寸检查器)编辑为所需的值。

即使是更简单的技巧,在添加约束之前,请确保所需的视图宽度等于超视图宽度,这样可以更轻松地更改Multiplayer的值而不显示橙色约束。

<强>输出:

iPhone 7:

enter image description here

iPad Pro:

enter image description here

蓝色视图宽度始终是屏幕的宽度,同时黑色宽度具有固定的宽度。

答案 1 :(得分:2)

为图片创建高度约束并与控制器 image

匹配

但布局

有更好的选择
   @IBOutlet weak var yourConstraint: NSLayoutConstraint!

   override func viewDidLoad() {
    super.viewDidLoad()

   let size = view.bounds.size.width


    if size > 400 {

        yourConstraint.constant = 230

    }else if size > 350 {

        yourConstraint.constant = 200

    }else{

        yourConstraint.constant = 170

    }   
  }

答案 2 :(得分:1)

您应该选择要在故事板中设置的对象。然后单击ctrl按钮稍后将光标滚动到superview并单击equalwidth / equalheight属性并将乘数设置为所需的速率。它就是。