执行-layoutSubviews后仍需要自动布局。 UICollectionView的-layoutSubviews实现需要调用super

时间:2015-08-18 03:23:12

标签: ios collectionview flowlayout layoutsubviews

我使用默认UICollectionView的{​​{1}}。它适用于iOS 8,但在iOS 7.1上我得到了

  

由于未捕获的异常而终止应用   'NSInternalInconsistencyException',原因:'自动布局仍然存在   执行-layoutSubviews后需要。 UICollectionView的   -layoutSubviews的实现需要调用super

我找到了这个“Auto Layout still required after executing -layoutSubviews” with UITableViewCell subclass,但解决方案都没有找到

另一个线索是我在UICollectionView中添加了一些视图,并为该视图设置了AutoLayout

UICollectionViewFlowLayout

这是我的自定义UICollectionView

中的内容
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.collectionView addSubview:button];

    [button mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.top.right.equalTo(self.collectionView);
        make.height.mas_equalTo(30);
    }];

1 个答案:

答案 0 :(得分:1)

我认为这是一个iOS 7错误,而不是[self.collectionView addSubview:button];我改为[self.view addSubview:button];,self.view是self.collectionView的父视图。

所以在iOS7中不要将子视图添加到UICollectionView并为该子视图使用自动布局