swift – 来自XIB的Autolayout Contraints

前端之家收集整理的这篇文章主要介绍了swift – 来自XIB的Autolayout Contraints前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在从圆圈加载一个视图(塑造一个圆圈).我想确保,圆圈的大小适应各种屏幕尺寸.到目前为止,我尝试将视图放在另一个视图中,将边距固定到superview,然后将superview的宽高比设置为1:1.这给了我一个圆圈.但是,现在,我想改变它的大小.目前,superview的大小由其中的另一个子视图指定,即标签.根据标签内容,superview的大小会发生变化(我已将标签的字体大小设置为Autoshrink).如果我尝试向边距约束添加常量,它可以工作,但在不同的屏幕尺寸上看起来大小相同.此外,我尝试添加乘数,而乘数适用于尾部和底部边距,顶部和前导边距不会受到设置乘数的影响.下面是IB的截图(今日视图是问题中的形状).
你有一个良好的开端 – 对齐中心X& Y,1:1的比例.您需要添加的是两组具有不同优先级的顶部/底部和前导/尾随约束.下面是一个示例,它结合了您拥有的三个约束,将所有方向的视图居中,沿着较窄的轴具有10个点边界:

优先级== 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比率设置为方形. (只要您没有触及优先级 – 默认是必需的.

原文链接:https://www.f2er.com/swift/320109.html

猜你在找的Swift相关文章