博客> 关于iOS7出现崩溃:[UITableView layoutSublayersOfLayer:]
关于iOS7出现崩溃:[UITableView layoutSublayersOfLayer:]
2017-11-20 23:23 评论:0 阅读:187 梧桐一叶
【UITableView layoutSublayersOfLayer】崩溃
    随着苹果手机屏幕的增多,autolayout发挥出越来越大的作用,给我们带来很多方便,但是带来方便的同时也会带来bug,命名iOS8,9运行没有问题,iOS7或者更低的版本就会出现崩溃【UITableView layoutSublayersOfLayer:】,有的时候是因为tableViewCell上使用了自动布局,我的项目中是因为tableView.headerView使用了自动布局。
   解决崩溃很简单,如果你是以为tableViewCell上使用了自动布局,解决办法之一是取消自动布局。第二个办法是,把cell上的控件添加方式由【self addSubView:nameLabel】改成【self.contentView addSubView:nameLabel】就解决了。
 我遇到的崩溃是因为我的tableView.headerView = custumHeaderView,中custumHeaderView使用了自动布局,解决办法是,在工程中代码创建一个headerView的容器contentHeaderView,把带有自动布局的custumHeaderView添加到contentHeaderView上面,然后tableView.headerView = contentHeaderView。这样做了以后真的不会崩溃了,但是可能引起布局不对,比如custumHeaderView的宽和高,或者上面图片位置不对等等,这个时候你要添加这个约束进去,手动设置custumHeaderView的宽和高,代码如下:

@property (weak, nonatomic) IBOutlet NSLayoutConstraint headViewWidthConstraint; @property (weak, nonatomic) IBOutlet NSLayoutConstraint headerViewHeightConstraint;

UIView *headerViewContainer = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, 108)]; _headView.frame = CGRectMake(0, 0, kScreenWidth, 108); _headViewWidthConstraint.constant = kScreenWidth; _headerViewHeightConstraint.constant = 108; [headerViewContainer addSubview:_headView]; headerViewContainer.backgroundColor = [UIColor redColor]; _tableView.tableHeaderView = headerViewContainer;

手动设置一下就OK了

收藏
1
sina weixin mail 回到顶部