2018-05-18 masonry 遇到的坑与删除约束

1.一般Masonry写的约束,如果冲突的话,会有提示,甚至会出现崩溃。但是有一类冲突却不会,它只会牺牲某一些约束来符合条件!
举例如下:
我们常常使用scrollView内部的控件高度大小来决定scrollView的滚动范围。这种操作好比是内部撑大这个scrollView的窗口。
我将这个这种撑大高度的约束形象地成为:内增高约束。
其他约束,我称之为:外限制约束。
问题的关键出现了:
这两类约束发生冲突时,你会发现Xcode约束不会报错。
内增高约束会被限制回无效化,主要以外限制约束为主。

2,我今天有个场景,特别奇怪,它不是更新约束,也不是建立约束。
它是:删除一条约束!!!
我仔细查看了Masonry的使用文档,我确认了一点新方法:

/**
 *  Creates a MASConstraintMaker with each view in the callee.
 *  Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
 *  All constraints previously installed for the views will be removed.
 *
 *  @param block scope within which you can build up the constraints which you wish to apply to each view.
 *
 *  @return Array of created/updated MASConstraints
 */
- (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;

All constraints previously installed for the views will be removed.这句话表明remake这个方法,属于重置这个控件的所有约束。
先删除约束,然后再重建这些约束!!!

你可能感兴趣的:(2018-05-18 masonry 遇到的坑与删除约束)