【问题标题】:Removing space after hiding labels with Autolayout使用自动布局隐藏标签后删除空间
【发布时间】:2017-12-28 14:36:33
【问题描述】:

我有三个 UILabel 彼此重叠,但我想隐藏第二个标签并将第三个标签移到更高的位置以与原始第二个标签占据相同的位置。现在,我的代码隐藏了第二个标签,并且我已将约束设为 0,但自动布局约束保持不变,因此第一个和第三个标签之间仍有很大的空间。

我见过其他关于 UIViews 的问题,但没有关于 UILabels 的问题,他们也没有讨论如何删除原始的自动布局约束

secondLabel.isHidden = true
secondLabelHeightConstraint.constant = 0

【问题讨论】:

  • 试试 UIStackView
  • 对不起,应该更清楚。第三个标签旁边有一个 ImageView,所以可以堆叠查看所有三个标签和图像视图吗?
  • 首先,UILabel 是 UIView 的子类,因此任何有关布局的内容都同样适用于它们(虽然很明显不是文本对齐)。其次,如果第三个标签旁边有一个 UIImageView,并且您希望它们保持在一起,则将它们放在自己的 UIView(或 UIStackView)中,以便将它们视为 UIStackView 中的单个项目。第三,如果您将标签放在 UIStackView 中,您只需隐藏它们而不调整任何约束。
  • 如果能比您给我们的多很多,那就太好了。根据您的话.... “我有三个 UILabel 相互重叠...隐藏第二个标签并将第三个标签移到更高的位置与原来的第二个标签相同...” 显而易见的答案应该是 (1) 不要乱用约束,(2) 不要使用isHidden,而是改为 (3) 在超级视图中,在子视图上使用bring(toFront:)你想在前面。如果这不起作用,那么请为您的问题添加更多细节!

标签: swift autolayout


【解决方案1】:

您可以将三个标签放入堆栈视图,然后使用它们的插座将其隐藏。即lbl1.isHidden = true 或者,如果您不想使用堆栈视图,您可以使用以下链接https://github.com/snoozelag/GoneVisible 它相当于 android got 方法,您可以为标签声明空间。你要做的第一件事是lbl1.isHidden = true 然后lbl1.gone()

【讨论】:

    猜你喜欢
    • 2014-03-20
    • 1970-01-01
    • 2013-08-20
    • 2016-08-30
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多