具有动态指定视图之间间距的自动布局

Posted

技术标签:

【中文标题】具有动态指定视图之间间距的自动布局【英文标题】:Autolayout with dynamic specified spacing between views 【发布时间】:2014-04-04 20:06:12 【问题描述】:

我使用 Autolayout 已经有一段时间了,并且非常了解它的工作原理。我无法弄清楚的一件事是视觉表示中的数字。

例如,V:|-(20)-[someView] 我想要更多类似V:|-(x)-[someView] 的东西。

约束建立后我不需要更改数字。但考虑到我同时处理许多限制,我试图找出最佳 UX 的最佳间距。我不想遍历并替换每个20,我只想将x 设置为所需的数字并重建应用程序。 (我知道查找/替换有效,但它并不可靠,如果您不小心,很容易造成意外更改)

我能想到的最佳是使用stringWithFormat,但这会增加代码中的集群,并且在涉及复杂视图时扩展性不强。

【问题讨论】:

【参考方案1】:

我认为metrics正是您要找的。这是一个例子:

NSDictionary *views = @@"blueView" : blueView;
NSDictionary *metrics = @@"offset" : @(40);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-offset-[blueView]-offset-|" options:0 metrics:metrics views:views]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-offset-[blueView]-offset-|" options:0 metrics:metrics views:views]];

【讨论】:

确实这正是我想要的,谢谢!如果它只是一个简单的数字,这也适用于@40 而不是@(40)

以上是关于具有动态指定视图之间间距的自动布局的主要内容,如果未能解决你的问题,请参考以下文章

自动布局等间距和加权间距

如何使用自动布局来布局三个项目水平相等

ios将3个视图放置在另一个具有自动布局的视图中

垂直自动布局子视图

自动布局 - 在表格单元格中对齐视图

具有自动布局的多个动态视图