【问题标题】:UIView autolayout constraints wrt parentUIView 自动布局约束 wrt 父级
【发布时间】:2018-06-21 12:58:33
【问题描述】:

我有一个自定义 UIView(称为 myView),它有很多子视图。我的问题是我需要根据 myView 在其父级中的位置放置 myView 的子视图。因此,如果 myView 在屏幕的左侧,我想在 myView 的右侧放置一些元素,并且当它向左移动超出中心时,我立即希望更改 myView 的子视图的布局。有没有一种简单的方法可以使用自动布局来实现这一点?

示例:让我们在 myView 中有一个 UISlider 和两个 UIButton。如果 myView 位于其父视图的最左侧,我希望 UISlider 位于 myView 的左侧。但是如果 myView 在其父视图中移动到右侧,我想将 UISlider 移动到 myView 的右侧。

【问题讨论】:

  • 你能用图片解释一下吗?
  • 以编程方式添加约束对您有好处,因为您只需要这样做。
  • 很简单,让我的视图中有一个 UISlider 和两个 UIButton。如果 myView 位于其父视图的最左侧,我希望 UISlider 位于 myView 的左侧。但是如果 myView 在其父视图中移动到右侧,我想将 UISlider 移动到 myView 的右侧。@PayalManiyar
  • @Desdenova 我正在寻找那些约束集,程序化或故事板无关紧要。

标签: ios uiview autolayout uikit ios-autolayout


【解决方案1】:

您将不得不通过代码来执行此操作 - 不能仅通过约束来执行此操作。

一种方法:

为“left-side-layout”创建一组约束,为“right-side-layout”创建另一组约束。然后,在运行时,确定您要使用的“版本”并仅激活适当的一组约束。

【讨论】:

  • 没关系,但是我需要听myView的frame变化,计算我是在左边还是右边,还是有更好的出路?
  • 这取决于myView的位置/框架是如何改变的。如果它只是响应您通过代码明确设置它,那么您可以简单地调用myView 中的一个函数来在设置它的框架后修改约束。如果myView 可以由于某些事件而移动,那么您可以创建一个观察者来观察变化,然后调用该函数。或者,您可以覆盖视图本身的框架更改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 2021-01-14
  • 2013-05-14
  • 1970-01-01
  • 2019-06-05
  • 2014-01-27
相关资源
最近更新 更多