【问题标题】:How can I set the top Constraint to be 20 percent of the screen height?如何将顶部约束设置为屏幕高度的 20%?
【发布时间】:2016-03-01 07:44:42
【问题描述】:

我在控制器视图中有一个UIImageView,与视图顶部的距离为屏幕高度的 20%。即我想将屏幕高度的 20% 设置为top ConstraintUIImageView

我可以在不添加透明视图的情况下实现这一点吗,这就是我现在的做法(通过将其高度设置为屏幕高度的 20%)到容器视图?

【问题讨论】:

  • 为什么不将它的 Y 原点设置为屏幕高度的 20%,并将其高度设置为屏幕高度的 80%?
  • @Robert 我想知道是否有任何方法可以在 IB/StoryBoard 中做到这一点?
  • 抱歉,我不知道,我只开发了一个 iOS 应用程序,并且我以编程方式设置了整个 UI(不好玩,也不是我的决定)。

标签: ios cocoa-touch autolayout nslayoutconstraint


【解决方案1】:

UIImageView 的顶部约束设置为main view 的底部,常量0,乘数0.22:10

原因:你的main view底部的坐标等于它的高度(控制器最顶部的view)。

编辑:一步一步

  1. 从顶部 UIImageViewmain view 顶部添加约束(就像你通常做的那样)。
  2. 进入该约束的详细信息,将main view 顶部更改为第二项(如果需要),并将其设置为main view 底部而不是顶部。
  3. 设置约束常数0,乘数0.22:10

【讨论】:

  • 完美答案。工作。
  • 这是原始问题的答案
【解决方案2】:

您可以在 IB/StoryBoard 本身中执行此操作。由于您希望图像视图与其父视图之间的顶部垂直空间始终为父视图高度的 20%,因此与将图像视图的高度设置为其父视图高度的 80% 并固定图像视图的底部相同到它的超级视图的底部。因此,您可以避免添加该透明视图。

步骤(我这里只考虑垂直限制):
1. 将约束从图像视图的底部拖到其父视图的底部。
2. 将等高约束从图像视图拖到它的父视图。在 Size Inspector 中将此约束的乘数值更改为 8:10(屏幕截图附在下方)。

【讨论】:

  • 这里可以设置top Constraint,但是后面不能根据包含的图片调整高度。
【解决方案3】:

将 Spacer View 置于顶部并将其高度比例设置为 20%,然后使用 spacerView 为您的 imageView 提供顶部约束并完成

【讨论】:

  • 感谢您的回复。但这就是我所做的。我想知道是否可以在不向 superView 添加任何其他视图的情况下实现此目的..
  • 我不认为他们有更好的方法来做到这一点。
  • 我有同样的想法,直到我发现具有不同属性的约束,这是最好的方法,AFAIK
猜你喜欢
  • 2019-06-15
  • 2018-12-10
  • 1970-01-01
  • 2011-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多