如何在自动布局的代码中设置UIViews之间的标准间距?

Ric*_*aca 5 ios autolayout

在界面构建器中,我可以通过"固定"获得与"标准"间距匹配的"垂直空间":

在此输入图像描述在此输入图像描述

在视觉约束语言中,我可以用以下方法完成同样的事情:

V:[top]-[bottom]
Run Code Online (Sandbox Code Playgroud)

如何在代码中的两个视图之间添加标准间距?

我正在寻找可能出现在UIViewController中的类似内容:

NSLayoutConstraint *spacing = ???
[self.view addConstraint spacing];
Run Code Online (Sandbox Code Playgroud)

rob*_*off 5

我没试过这个:

[self.view addConstraint:[NSLayoutConstraint
    constraintWithItem:topView
    attribute:NSLayoutAttributeBottom
    relatedBy:NSLayoutRelationEqual
    toItem:bottomView
    attribute:NSLayoutAttributeTop
    multiplier:1
    constant:8]];
Run Code Online (Sandbox Code Playgroud)

  • 难道这只是硬编码8的空间吗?我认为OP是用一些系统常量或关键字来描述标准间距. (5认同)

jrt*_*ton 2

混合和匹配视觉格式约束和更详细的单一约束创建样式(我认为当你说“在代码中”时指的是你所指的)是很好的 - 事实上,在 WWDC 谈论自动布局时,“首选”顺序你创建的约束被表述为:

  • 界面构建器
  • 视觉格式
  • 单一约束样式

除非您需要单一约束样式为您提供的额外功能和灵活性(根据我迄今为止的经验,在很多地方视觉格式不起作用),否则您应该使用视觉格式。听起来您是从下往上而不是从上往下接近上面的列表。

如果您想以标准间距布局视图,并且不使用 IB,那么使用视觉格式是有意义的。正如 Rob 所说,可用的“标准”间距并不存在恒定值,并且坚持对所有内容进行单一约束会为您自己带来更多工作。