基于屏幕(超级视图)高度的iOS顶部对齐约束

时间:2018-07-02 14:03:57

标签: ios storyboard uikit xib nslayoutconstraint

例如,假设我希望视图的最高边距为

iPhone 6s为30像素

对于另一个屏幕,我想将此常数从30更改为X,其中X与屏幕的总高度成比例

iPhone X的36.5, iPhone 6s plus为33, iPhone SE 25

以此类推....我知道我可以采用@IBOutlet中的NSLayoutConstraint并以编程方式对其进行更改,但是我想要的是将其设置为像高宽比那样的宽高比子视图的高度宽度是成比例的,它是超级视图,它随超级视图的高度和宽度而改变

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您希望顶部锚点的常量为距顶部的屏幕高度的0.25,则此处需要的约束是superView的centerY设置乘数为0.5,因此请根据以下逻辑调整乘数

  

屏幕高度= 2 *中心Y

enter image description here

答案 1 :(得分:1)

仅在像您这样的最大约束下这是不可能的。无法通过界面构建​​器将顶部距离与高度相关联。

您可以在图像上方添加仅用于提供填充的视图。您的层次结构在VFL中将如下所示:

"V:|[paddingView][imageView]"

以下是图像视图上方的视图图像:

view above image view

然后,您可以在该填充视图上安装高度限制,使其与包含视图相等。

make heights equal

向该约束添加一个乘数,以获取预期的高度。如果您希望它在667点高的屏幕上为30,那么乘数将为0.044978(30/667 =〜0.044978)。该高度限制将根据主视图的高度进行更新,以提供所需的视觉填充。

add multiplier to the constraint