优先级== 750
>顶部== 10分
>底部== 10分
>领先== 10分
>追踪== 10分
优先级== 1000
> Top> = 10分
>底部> = 10点
>领先> = 10分
>尾随> = 10分
您可能会在执行此操作时看到错误/警告,因为IB不知道如何渲染它,但是一旦完成此操作,您将拥有所需的内容.
编辑:
从记忆中,有点和像素.在可能的时间和地点,尝试用点数来思考.关于像素的唯一时间是图像. (可能还有其他图形测量,但同样,我是从记忆中写的.)
点数应该在设备尺寸上保持一致 – 因此,如果您在4英寸iPhone屏幕上有100×100的正方形,那么它在12.9英寸iPad Pro上的尺寸将相同.
更重要的是,使用自动布局可以将边距设置为相同.这两个屏幕上的25点差异将是相同的.因此,在上面的示例中,您将获得几乎所有设备中可能的最大矩形,因为您设置的是边距,而不是视图大小.
我去年深入研究了屏幕尺寸,这些是当前屏幕尺寸:
//iPad Pro 1366x1024 //iPad 1024x768 //iPad Mini 1024x468 //iPhone 6 Plus 736x414 //iPhone 6 677x375 //iPhone 5 568x320 //iPhone 4 480x320
因此基于此,上述约束将在iPhone 4(iPhone SE也)上产生300×300的正方形,因为最窄的轴将减少320个两个10点的边距.在iPad Pro 12.9英寸上它将是1004×1004平方.
在代码中创建约束时,还可以使用以下代码创建layoutMarginGuide:
let margins = view.layoutMarginsGuide
这应该与在IB中选中“包含边距”复选框保持一致.基本上这是每个设备的建议边距大小. (我相信这还应该包括状态栏,标签栏和导航栏,甚至是iPhone“电话呼叫顶部横幅(原文如此)”.但是我对YMMV有一些问题.)
编辑2:
把这一切放在一起,你通过“自动布局”定义的是一种非常流畅的方式来最大化正方形的大小(或者在你的情况下,一个正方形变成一个圆形).通过设置两组边距,一组等于但具有高优先级,您可以让自动布局知道它可能会超出所需的约束.需要具有大于或等于值的第二组.
因此,在480×320设备中,可以打破无法满足的顶部/底部边界约束(“等于”),并且在横向上将破坏不能满足的前导/尾随约束.请记住,您已经设置了中心X / Y,因此视图将居中,并且您将1:1比率设置为方形. (只要您没有触及优先级 – 默认是必需的.