Masonry 布局在iOS7 上崩溃的解决方案总结

1)报错error

2017-01-10 19:17:30.448 DYZB[10752:60b] *** Assertion failure in -[DYNobleListView layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2903.23/UIView.m:8540
libc++abi.dylib: terminate_handler unexpectedly threw an exception

2)出现场景:一个View是 xib和mas混用

Xib和mas混着用在iOS7上就是大坑,要么全用mas,要么全用xib,动态的部分控件隐藏和改变constraint 来实现动态效果。

 [super awakeFromNib];
//改变布局
}``` 

awakeFromNib设置mas 布局,

```- (void)layoutSubviews{
 [super layoutSubviews]
//改变布局
};```

layoutSubviews里面也有使用mas改变布局的动作


#3.1)百度有很多种解决方案,我试的80%的不会有用(我试过好多次)


![图片.png](http://upload-images.jianshu.io/upload_images/1194882-44bd0d55c8bbe3ed.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#3.2)stackoverflow 的方案(不一定好使)
http://stackoverflow.com/questions/24549334/autolayout-crash-when-applying-transform-assertion-failure-in-layoutsublayers
http://stackoverflow.com/questions/26751801/autolayout-issue-for-uitextfield-in-ios
#4)个人经验85%的概率会有用的方案:手写frame
使用mas 的布局在ios7 上有概率性的崩溃,当有问题的时候手写frame = CGRectMake() 即可解决
项目中遇到的 视屏的布局混乱,部分使用手写frame 设置frame如(frame = cgrectMake(20,屏幕宽度*0.5,A控件的底部+10,40))
如果还不行 ,就修改下改变布局的时机 ,90% 的概率就可以了

#5)曾经遇到的问题使用手写frame解决的案例

案例1)iOS7视频界面布局混乱,iOS8 以上一切正常,手写frame 解决问题
案例2)某个appzuifuza最复杂的界面ios7 上 一进入就崩溃,某同事在willlayOutsubView方法里面,使用mas 改变了布局,后来手写frame 搞定
案例3)某界面``` - (void)layoutSubviews{```使用mas 立马崩溃,使用手写frame = CGRectMake()  在ioS7 上就不崩溃
          初步怀疑 xib 在layoutSubviews没有合理的加载,这个时候在xib 上使用mas 布局会有冲突 (此时改代码记得clean 项目)

#当然修改布局的调用时机也可以解决崩溃的,比如不在layoutSubviews修改布局(验证有效的)

______
- 作者开发经验总结的文章推荐,持续更新学习心得笔记
[Runtime 10种用法(没有比这更全的了](http://www.jianshu.com/p/3182646001d1)
[成为iOS顶尖高手,你必须来这里(这里有最好的开源项目和文章)](http://www.jianshu.com/p/8dda0caf47ea)
[iOS逆向Reveal查看任意app 的界面](http://www.jianshu.com/p/060745d5ecc2)
[JSPatch (实时修复App Store bug)学习(一)](http://www.jianshu.com/p/344db07a2374)
[iOS 高级工程师是怎么进阶的(补充版20+点)](http://www.jianshu.com/p/1f2907512046)
[扩大按钮(UIButton)点击范围(随意方向扩展哦)](http://www.jianshu.com/p/ce2d3191224f)
[最简单的免证书真机调试(原创)](http://www.jianshu.com/p/c724e6282819)
[通过分析微信app,学学如何使用@2x,@3x图片](http://www.jianshu.com/p/99f1f924ae45)
[TableView之MVVM与MVC之对比](http://www.jianshu.com/p/d690b5d97201)
[使用MVVM减少控制器代码实战(减少56%)](http://www.jianshu.com/p/f85363c82ea1)
[ReactiveCocoa添加cocoapods 配置图文教程及坑总结](http://www.jianshu.com/p/66f0c7e1ced8)

你可能感兴趣的:(Masonry 布局在iOS7 上崩溃的解决方案总结)