基于屏幕(superview)高度的iOS顶部对齐约束

基于屏幕(superview)高度的iOS顶部对齐约束,ios,storyboard,uikit,xib,nslayoutconstraint,Ios,Storyboard,Uikit,Xib,Nslayoutconstraint,比如说,我希望我的视图的上边距为 30像素,适用于iPhone 6s 对于另一个屏幕,我想把这个常数从30改为X,其中X和屏幕的总高度成正比 i、 e 对于iPhone X,36.5, 33对于iPhone 6s plus, 25适用于iPhone SE 等等。。。。我知道我可以采用NSLayoutConstraint的@IBOutlet并通过编程方式对其进行更改,但我想要的是,我想设置它,就像我们对高度-宽度的纵横比一样,子视图的高宽成比例,它的超视图,它随超视图的高度和宽度而变化 仅在顶部约

比如说,我希望我的视图的上边距为

30像素,适用于iPhone 6s

对于另一个屏幕,我想把这个常数从30改为X,其中X和屏幕的总高度成正比

i、 e

对于iPhone X,36.5, 33对于iPhone 6s plus, 25适用于iPhone SE

等等。。。。我知道我可以采用
NSLayoutConstraint
@IBOutlet
并通过编程方式对其进行更改,但我想要的是,我想设置它,就像我们对高度-宽度的纵横比一样,子视图的高宽成比例,它的超视图,它随超视图的高度和宽度而变化


仅在顶部约束条件下,这是不可能的。从interface builder无法将顶部距离与高度关联

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

"V:|[paddingView][imageView]"
以下是图像视图上方的视图图像:

然后,可以在填充视图上安装高度约束,使其与包含视图相等

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


仅在顶部约束条件下,这是不可能的。从interface builder无法将顶部距离与高度关联

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

"V:|[paddingView][imageView]"
以下是图像视图上方的视图图像:

然后,可以在填充视图上安装高度约束,使其与包含视图相等

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


这里需要的约束是superView的centerY设置乘数为0.5,如果您希望顶部定位点的常数为距顶部屏幕高度的0.25,请根据以下逻辑调整乘数:

屏幕的高度=2*centerY


这里需要的约束是superView的centerY设置乘数为0.5,如果您希望顶部定位点的常数为距顶部屏幕高度的0.25,请根据以下逻辑调整乘数:

屏幕的高度=2*centerY


谢谢。。。是的,我知道这个填充视图解决方案。。。但我只是想知道,如果不采取额外的意见只是为了padding@mihirmehta我同意,这并不理想。如果我要实现这个,我很可能只是在代码中设置这个约束,而不是在xib中添加类似于填充视图的内容。填充视图可能会让人困惑,当你试图维护一段很长的路,代码中的约束可以被注释为清晰。谢谢。。。是的,我知道这个填充视图解决方案。。。但我只是想知道,如果不采取额外的意见只是为了padding@mihirmehta我同意,这并不理想。如果我要实现这个,我很可能只是在代码中设置这个约束,而不是在xib中添加类似于填充视图的内容。当您试图保持道路较远的路段时,填充视图可能会令人困惑,为了清晰起见,可以对代码中的约束进行注释。与其将视图顶部与superview顶部关联,不如将其与superview的中心线关联并更改约束的乘数,而不是将视图顶部与superview顶部关联,不如将其与superview的中心线关联并更改约束的乘数限制