记一次masonry约束冲突警告修改

场景:keyWindow上,添加一个UIView,view里面有一个输入框,高度根据输入内容自适应
初始遇到的问题:
在 - (void)textViewDidChange:(UITextView *)textView 中计算和修改高度,发现高度计算正确,使用 masonry mas_update 更新高度约束,高度未生效
然后开始查找不生效的原因。
过程中,发现这个view生成展示时,控制台会报一大串的约束警告。
此时,大概知道是约束问题导致 update 约束未生效,所以将 masonry mas_update 调用修改为 masonry mas_remark ,调用生效。但是,初始化时,控制台约束警告依然存在。
继续查找约束冲突的地方。
详细查看打印后,发现添加在keyWindow上的UIView 高度一直默认是0。
去找keyWindow添加UIView的地方,发现view使用masonry设置约束,限定view四周与keyWindow贴合。
但是打印警告的地方,告诉我UIView的高度为0,所以此处怀疑,约束设置未生效。
修改使用frame方式添加UIView后,再次验证,此时约束警告消除。
将 masonry mas_remark 改回 masonry mas_update 调用,高度更新成功。

以上结论:keyWindow添加UIView,使用masonry配置约束,不能生效,最好使用frame方式。

PS:如有不准确的地方,欢迎指证。

你可能感兴趣的:(记一次masonry约束冲突警告修改)