【问题标题】:iOS: 3 UILabels under each other constraintsiOS:相互约束下的 3 个 UILabel
【发布时间】:2017-01-06 10:17:48
【问题描述】:

我有 3 个UILabes在彼此之下。第一个的最高约束是20superview,第二个是20first label。第三个是20second 一个。但有时第一个和第二个标签的文本是空的。我只想让我的第三个标签变成20superview,但是当我设置约束时它变成20+20+20 to superview.

是否可以仅使用情节提要来解决此问题,或者我必须使用一些代码。

对不起,我的英语很差,请帮帮我。

【问题讨论】:

  • 还有什么其他限制..???可能是您没有正确设置其他约束。
  • 是的,您可以通过情节提要解决此问题,请等待我给出答案。
  • @balkaransingh 我在等你
  • @ArtemZ。我试试,但你至少需要两个 IBOutlet NSLayoutConstraint。

标签: ios objective-c autolayout storyboard nslayoutconstraint


【解决方案1】:

您可以以编程方式执行此操作,获取所有标签的 HeightTop Space 约束的出口。

检查标签文本,如果为空则将HeightTop Space 约束Constant 设置为0

喜欢,

如果第一个标签文本为空,则将第一个标签Height constraint 常量设置为0Top Space 约束Constant 设置为0。以同样的方式检查其他标签。

【讨论】:

  • 我不想以编程方式制作这个,只是询问了故事板
  • @ArtemZ。在故事板中是不可能的。您必须为此添加代码。
【解决方案2】:

考虑到您的要求,我为它创建了一个带有 3 个标签的演示。但是我已经在 Stack View 中添加了这 3 个标签,并且具有垂直方向。然后我在堆栈视图之外的 UIView 中添加了一个按钮,然后在单击按钮时我隐藏了第二个标签。这样做我得到了你需要的结果。

@IBAction func btnClicked(sender: AnyObject) {
    lbl2.hidden = true
}

希望这会有所帮助。

【讨论】:

  • 堆栈视图仅适用于 iOS 9.0 及更高版本。
【解决方案3】:

您可以在 UIView 中添加每个标签。将顶部标签约束设置为 20 到 superview(在这种情况下将 20 到容器 UIView 的顶部)。
然后使 UIView 1 具有 top 0 到 superview。 UIView 2 到 UIView 1 的前 0 和 UIView 3 到 UIView 2 的 0。

然后你可以隐藏每个 UIView,当你没有任何文本在它对应的 UILabel 中时,它们会很好地显示。

【讨论】:

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