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

问题描述 投票:0回答:1

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

虽然我不知道它最终会如何或在何处显示,但我知道我总是希望它的宽度为其父级的一半,并固定在右侧。

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

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

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

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

iOS中是否有任何方法我可以指定“这个视图应该是这么高,并且总是尽可能地保持正确”,而不知道父母或周围的观点提前?

ios autolayout nslayoutconstraint
1个回答
1
投票

虽然我不知道它最终会如何或在何处显示,但我知道我总是希望它的宽度为其父级的一半,并固定在右侧。

您必须等到视图有父级,但这并不困难。使用自定义UIView子类。在该子类中,覆盖didMoveToSuperview,并在覆盖中创建并激活约束。当你这样做时,请参考视图的超级视图self.superview!;这是您的所有代码需要知道的。

© www.soinside.com 2019 - 2024. All rights reserved.