【问题标题】:Swift UICollectionViewLayout contentSize crashSwift UICollectionViewLayout contentSize 崩溃
【发布时间】:2017-08-21 12:03:45
【问题描述】:

尝试在 iOS 中调整 4" 屏幕上的集合视图的内容大小,但我在控制台中收到关于使用集合视图流布局的宽度的错误。

        if DeviceType.IS_4_INCH {
        collectionView.contentSize = CGSize(width: screenWidth - 50, height: collectionView.collectionViewLayout.collectionViewContentSize.height)
    }

错误:

The relevant UICollectionViewFlowLayout instance is 
<UICollectionViewFlowLayout: 0x7fbb9144dd20>, and it is attached to 
<UICollectionView: 0x7fbb92885800; frame = (10 10; 270 750); clipsToBounds = YES; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x7fbb914d25e0>; layer = <CALayer: 0x7fbb9147f560>; contentOffset: {0, 0}; contentSize: {325, 750}> collection view layout: 
<UICollectionViewFlowLayout: 0x7fbb9144dd20>.

当框架为 270 时,我发现问题与内容大小 (325) 有关,但是当我尝试根据屏幕宽度更改它时,它崩溃了。

谢谢

【问题讨论】:

  • 我认为你应该使用 UICollectionViewDelegateFlowLayout 像 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { if DeviceType.IS_IPAD_PRO || DeviceType.IS_IPAD { return CGSize(width: width / 3, height: 100) } else { return CGSize(width: width / 3, height: 100) } }

标签: ios swift uicollectionview


【解决方案1】:

在调整框架大小后,您的某个元素看起来超出了 UICollectionView 的大小

在重新加载数据之前尝试使当前布局无效:

self.collectionView.collectionViewLayout.invalidateLayout()

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 2016-05-14
    • 2016-06-20
    • 2018-03-11
    相关资源
    最近更新 更多