是否可以相对于未知的UIView定义自动布局约束?

时间:2019-04-23 20:33:00

标签: ios autolayout nslayoutconstraint

假设我有一个UIView或UIViewController,我想在整个应用程序的许多地方使用它。

虽然我不知道它最终将如何显示或显示在什么地方,但我知道我一直希望它具有其父对象宽度的一半,并固定在右边。

如果我想在HTML / CSS中实现类似的功能,则可以采用以下样式:

.floatRight{
  position: relative;
  width: 50%;
  float: right;
}

<div class="floatRight"> foobar </div>

我尝试使用NSLayoutConstraints,但据我所知,我只能指定相对于其他视图的约束,这意味着我必须提前知道我的视图将放置在何处。

iOS中有什么方法可以指定“此视图应该这么高并始终尽可能靠右”,而无需提前知道父视图或周围的视图?

1 个答案:

答案 0 :(得分:1)

  

虽然我不知道它最终将如何显示或显示在什么地方,但我知道我一直希望它具有其父对象宽度的一半,并固定在右边。

您必须等到视图具有父级,但这并不困难。使用自定义UIView子类。在该子类中,覆盖didMoveToSuperview,并在您的覆盖中创建并激活约束。这样做时,将视图的超级视图称为self.superview!;这就是您的代码需要知道的全部内容。