代码之家  ›  专栏  ›  技术社区  ›  Ben Reed

autolayout是否添加了无法删除的宽度约束?

  •  0
  • Ben Reed  · 技术社区  · 7 年前

    每当我为iOS写文章时,我总是在与自动布局作斗争。还有其他人有这些问题吗?你如何克服它?你有没有回到SnapKit这样的替代品?

    这就是我努力实现的目标:

                UITableViewCell  
    +-------------------------------------+
    | +-------------------------+ +-----+ |
    | | Label #1                | | #2  | |
    | +-------------------------+ +-----+ |
    +-------------------------------------+
    

    我想要以下内容:

    • 标签#1垂直居中
    • 标签#2垂直居中
    • 从左边界到标签#1的前导空间为常数
    • 从标签#2到右边界的尾随空间为常数
    • 标签#1和标签#2之间的水平间距为常数

    以下是我收到的警告:布局组不明确

    • 主要的故事板:警告:布局不明确:“标签#2”的垂直位置不明确。(1)
    • 主要的故事板2视图在水平方向上不明确。
    • 主要的“标签#2”的故事板宽度和水平位置不明确。(2) 主要的故事板:警告:布局不明确:“标签#1”的垂直位置不明确。(1)

    我的想法:

    1. 垂直位置不应模糊。如果我没有将其设置为垂直居中,它在我的设备上似乎是错误的。
    2. 我没有设置宽度约束。我甚至没有看到IB中需要删除的任何宽度约束。
    1 回复  |  直到 7 年前
        1
  •  3
  •   Glenn Posadas    7 年前

    只有在希望以编程方式添加约束(例如)时,才能使用自动布局库 SnapKit 的确

    iOS新手需要记住的一件事是,视图应该 Width , Height , X Y .

    现在,使用界面生成器做您想做的事情非常简单。在序列图像板或Xib中进行布局时,如果布局不正确,则会出现警告或错误。

    如果需要以下内容,请查看是否已实现:

    • 标签#1垂直居中于superView(单元格)
    • 标签#2垂直居中于superView(单元格)
    • 从标签#2到右边界的尾随空间为常数
    • 标签#1和标签#2之间的水平间距为常数–œ

    正如你在我的约束中看到的,有5个。

    1. 从superView到标签1的前导距离。
    2. 将Y居中于标签1的单元格。
    3. 从superView到标签2尾部的尾部距离。

    最后,如果没有这个#6,您应该会得到一个错误或警告。

    1. 两个视图(标签)中的一个应该具有恒定宽度,我根据您的要求将恒定宽度放置在标签2上。

    关于你的问题:

    autolayout是否添加了无法删除的宽度约束?

    否,除非通过修复界面生成器中的警告/错误自动添加。

    希望有帮助。

    enter image description here