我一直在与Autolayout合作一段时间,并且几乎了解它是如何工作的。我无法弄清楚的一件事是视觉表现中的数字。
例如,V:|-(20)-[someView]
我想要更多V:|-(x)-[someView]
行。
在建立约束后,我不需要更改数字。但考虑到我同时处理许多约束,我试图找出最佳用户体验的最佳间距。我只想将20
设置为所需的数字并重建应用,而不是通过并替换每个x
。 (我知道查找/替换是有效的,但是如果你不小心的话,它可能很容易造成意想不到的变化)
我能想到的最佳是使用stringWithFormat
,但这会增加代码中的集群,而且在涉及复杂视图时不具有很强的可扩展性。
答案 0 :(得分:3)
我认为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]];