【问题标题】:Using two top constraint with various priority values使用具有不同优先级值的两个顶部约束
【发布时间】:2016-05-21 10:40:37
【问题描述】:

我有一个非常琐碎的案例。 有一个 Container(浅灰色),其 HeaderLabel(行 = 0)具有 16px 边距和 View(蓝色)。

如果 HeaderLabel 有一些值,它应该放在视图上方。

否则,如果我们没有 HeaderLabel 的值,它应该会消失并且 View 会停留在 Container 的顶部。

我尝试为 HeaderLabel 和 Container (constant >= 0) 创建两个具有不同优先级的 View.Top 约束。

如果没有文本值,则删除代码中的HeaderLabel

if (!text) {
    [headerLabel removeFromSuperview];
}

但它似乎不起作用。它只是显示了 Container 顶部和 View 之间的差距

我如何使用 IB 管理这个案例?还是应该通过其他方式解决?

【问题讨论】:

  • 您需要为您的约束创建一个 IBOutlet 并以编程方式设置它。

标签: ios objective-c xcode interface-builder constraints


【解决方案1】:

我会推荐使用这种方法,它使滚动视图约束更大,以便滚动视图将覆盖标签和间隙。 首先,为您的约束创建一个 IBOutlet。

@property (weak, nonatomic) IBOutlet NSLayoutConstraint *NAME;

然后,将它与你的 scrollView 的垂直约束连接起来。

之后,检查标签值并将约束设置为0,即值为nil。

if (!text){
    [UIView animateWithDuration:0.3 animation:^{
        self.NAME.constant = THE HEIGHT OF SCROLLVIEW + THE GAP;
    }]
}

【讨论】:

    【解决方案2】:

    1 个视图(viewLabel),前导、尾随和顶部到超级视图,底部到视图(蓝色视图)。

    对于在 viewLabel 中设置的标签,带有约束前导、尾随、顶部和底部到超级视图,并设置行的标签编号 = 0。 设置值(如果有)

    label.text = @"Value";
    

    任意设置

    label.text = @"";
    

    自动布局自动管理标签及其superView(viewLabel)的高度以及设置值后[self.view layoutIfNeeded]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多