以编程方式添加视图时,是否有更简洁的方法将其拟合到父视图而不是下面?
NSDictionary *views = @{ @"view" : view };
NSArray *horizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[view]-0-|" options:0 metrics:nil views:views];
NSArray *verticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[view]-0-|" options:0 metrics:nil views:views];
[parentView addConstraints:horizontalConstraints];
[parentView addConstraints:verticalConstraints];
答案 0 :(得分:4)
不使用任何额外的依赖项,您的代码的最简洁版本是:
NSDictionary *views = @{ @"view" : view };
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[view]|" options:0 metrics:nil views:views]];
[parentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:views]];
(您不需要拥有数组变量,假定零填充,H:是默认轴值)。
冒着@uchuugaka投票失败的风险,您可以使用我的auto layout convenience category,这将允许以下内容:
[view pinToSuperviewEdges:JRTViewPinAllEdges inset:0];
答案 1 :(得分:1)
通过使用NSDictionaryOfVariableBindings()创建视图字典,您的代码可以稍微改进代码,但不会更正确。 如果要在视图边缘和相应的超视图边缘之间使用零间距约束,则可以省略VFL字符串中的破折号和零。
除此之外,您还需要使用DSL,这意味着需要学习其他东西,并且仍然可以根据真实形式进行理解和调试。