前言
很久没有更新blog了 一是因为换了工作在赶新项目导致白天没时间 二是因为孩子快出生了导致晚上没时间 周末就更不自由啦
看了今天的苹果发布会的新闻 还是挺激动的啊 不管是watch 还是macbook
问题
这次说的这个问题也是年前在调bug的时候出现的 由于开发一直是在ios8上进行的 所以一路顺风顺水没有任何问题 直到有一天 一个同事拿着他的ios7.x的iphone5S要我帮忙装一个最新的开发版 然后使用过程中就出现了闪退 一查就是如题的错误log1
Auto Layout still required after executing -layoutSubviews.
ok google了一下 发现stackoverflow上面也有不少人遇到了这种情况 基本的解决办法是 派生对应的类 然后在类方法中重载layoutSubviews1
2
3
4- (void)layoutSubviews {
[super layoutSubviews];
// code to scroll the view
}
还有另一种方法是使用swizzle method 替换layoutSubviews的默认行为 本质上也是一样的解决思路
但是 无论怎么尝试都没有办法解决我的问题 经过自己的摸索之后 终于得出了解决
方法
其实问题出现的原因(或者说解决的方法)很简单也很蛋疼
以UITableView为例 导致这个问题出现的原因是因为我在tableView上add了一个自定义的subview(对 就这么简单) 那么解决问题的方法就是把这个subview给去掉
同样的问题也出现在了UITextfield上 同样去掉subview就ok了(其他的原生控件上暂时没有做类似布局 所以是否其他控件也有类似问题不得而知 如果大家遇到了这种问题 可以尝试查看一下是否有自定义的subview)
具体的原因我也无法深究 但应该是在ios7之前的autolayout本身存在着缺陷所导致 ios8后修复了这些问题(stackoverflow上很多人是这么说的)