比如一个UIViewController中。今天看到PureLayout中看到是这样组织的:
- (void)loadView
{
self.view = [UIView new];
[self.view addSubview:self.blueView];
[self.view addSubview:self.redView];
[self.view addSubview:self.yellowView];
[self.view addSubview:self.greenView];
[self.view setNeedsUpdateConstraints]; // bootstrap Auto Layout
}
- (void)updateViewConstraints
{
if (!self.didSetupConstraints) {
// Apply a fixed height of 50 pt to two views at once, and a fixed height of 70 pt to another two views
[@[self.redView, self.yellowView] autoSetViewsDimension:ALDimensionHeight toSize:50.0];
[@[self.blueView, self.greenView] autoSetViewsDimension:ALDimensionHeight toSize:70.0];
self.didSetupConstraints = YES;
}
[super updateViewConstraints];
}
问题来了:
1. 如果我在loadView中添加Constraints,这样肯定是添加一次的,也省得用didSetupConstraints了,不是更好吗?这样会有什么问题吗?
2. [super updateViewConstraints];为什么放到了updateViewConstraints的最后面,放在最前面会有什么问题呢?
PS: 在PureLayout的 Tips-and-Tricks中提到了上面的做法,很可惜并没有说明原因,所以询问一下大家的看法。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.