【问题标题】:iOS Top Alignment constraint based on screen (superview) height基于屏幕(超级视图)高度的 iOS 顶部对齐约束
【发布时间】:2018-12-10 18:59:26
【问题描述】:

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

iPhone 6s 为 30 像素

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

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

等等....比例它的超级视图它随着超级视图的高度和宽度而变化

【问题讨论】:

    标签: ios storyboard uikit xib nslayoutconstraint


    【解决方案1】:

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

    height_of_screen = 2 * centerY

    【讨论】:

      【解决方案2】:

      这在像你这样的顶级约束上是不可能的。没有办法将顶部距离与界面生成器的高度相关联。

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

      "V:|[paddingView][imageView]"
      

      这是图像视图上方的视图图像:

      然后您可以在该填充视图上安装高度约束,使其等于包含视图。

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

      【讨论】:

      • 谢谢......是的,我知道这个填充视图解决方案......但我只是想知道是否可以在不为填充而采取额外视图的情况下实现同样的效果
      • @mihirmehta 同意,这并不理想。如果我正在实现这个,我很可能只是在代码中设置这个约束,而不是在 xib 中添加类似这个填充视图的东西。当您尝试在远处维护一个部分时,填充视图可能会令人困惑,为了清楚起见,可以注释代码中的约束。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2016-03-01
      • 1970-01-01
      • 2018-08-01
      • 2015-01-30
      相关资源
      最近更新 更多