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这个方法,属于重置这个控件的所有约束。
先删除约束,然后再重建这些约束!!!
网友评论