iOS7:"Assertion failure in -[UITableView layoutSublayersOfLayer:]"的一种情况

问题描述

不废话,由于历史原因,你有一个禁用了Autolayout的UITableView,你现在在上面添加了一个开启了Autolayout的subView,你在iOS8以后的系统中愉快的运行,正在感叹Autolayout的强大好用,然后又由于历史原因,你们的App还在支持iOS7,那在iOS7系统上你会得到一个毕现的crash,你会在控制台收到下面这样的Log:

2016-07-10 13:26:56.250 CrashTest[15164:60b] *** Assertion failure in -[UITableView layoutSublayersOfLayer:], /SourceCache/UIKit/UIKit-2935.138/UIView.m:8794
2016-07-10 13:40:43.634 CrashTest[15164:60b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Auto Layout still required after executing -layoutSubviews. UITableView's implementation of -layoutSubviews needs to call super.'
*** First throw call stack:
(0x182467100 0x18e9701fc 0x182466fc0 0x182f9edb4 0x18542b0a8 0x18501c258 0x185016e20 0x1850499e4 0x1854b0a90 0x1854af9ec 0x18543243c 0x1854af018 0x185437948 0x185434d60 0x1854a7824 0x1854a4130 0x18549d9d4 0x1854318b4 0x185430ab8 0x18549d02c 0x18804f504 0x18804f030 0x182427040 0x182426fa0 0x1824251c4 0x182365dd0 0x18549c1b0 0x185496fc4 0x10003c828 0x18ef63aa0)
libc++abi.dylib: terminating with uncaught exception of type NSException

如果你添加了全局异常断点,你会收到这样让人懵逼的断点信息

断点信息.png

解决方案

如果你的tableView没有使用auto layout,那么添加在它上面的subView,老老实实的用autoresizing吧,等到你脱离iOS7,就可以愉快的使用autolayout了,呵呵!

当然,如果哪位同学还有其他完美的解决方案,不妨在留言里优雅的点出,不胜感激

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,283评论 4 61
  • 1.尺寸适配1.原因 iOS7中所有导航栏都为半透明,导航栏(height=44)和状态栏(height=20)不...
    LZM轮回阅读 6,190评论 1 4
  • 我花了一个半小时精心撰写的一篇千字左右的讯息,提交审核的十分钟后变成了短短两三句话跟其他内容一道被发布出来。我愕然...
    萨因阅读 336评论 0 0
  • 什么是小确进? 小而确定的进步。 2016年即将结束,这一年,我们大多数人都不可能获得什么惊天动地的成就和飞跃。 ...
    慧的夜游园阅读 580评论 2 2
  • 为了保持身体强健,避免衰弱和生病,我们做瑜伽、慢跑或散步等各种运动。 同样的,我们更需要保持心的强健。心更为重要,...
    净德阅读 931评论 0 0