3

我使用UICollectionView默认值UICollectionViewFlowLayout。它适用于 iOS 8,但在 iOS 7.1 上我得到

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

我发现使用 UITableViewCell 子类执行“-layoutSubviews 后仍需要自动布局”,但没有一个解决方案有效

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

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);
    }];

这就是我的自定义 UICollectionView

@implementation FTGCollectionView

- (void)layoutSubviews {
    [super layoutSubviews];
    //[self layoutIfNeeded]; // Should not call as it cause collection view to not scroll
}

@end
4

1 回答 1

1

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

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

于 2016-06-23T09:10:02.907 回答