`UICollectionView` 在 iOS12 的BUG,自动布局无效。

UICollectionView 在 iOS12 的BUG,自动布局无效。

  1. 解决办法,在 reloadData 之后调用,比较复杂,刷新有时候有问题。
// view did load layout

DispatchQueue.main.async {
    collectionView.collectionViewLayout.invalidateLayout()
}
  1. 直接在 viewWillLayoutSubviews 中使用
// view will layout subviews 

collectionView.collectionViewLayout.invalidateLayout()
  1. 使用 UICollectionView 子类实现。最好最保险。
class CCAutoLayoutCollectionView: UICollectionView {
  // once
    private var shouldInvalidateLayout = false

    override func layoutSubviews() {
        super.layoutSubviews()
      
        if shouldInvalidateLayout {
            collectionViewLayout.invalidateLayout()
            shouldInvalidateLayout = false
        }
    }

    override func reloadData() {
        shouldInvalidateLayout = true
        super.reloadData()
    }
}

navigationItem.titleView 在iOS13之前显示问题

  • 重写内容布局 layoutFittingExpandedSize
class YGBarTitleView: UIView {
 
    override var intrinsicContentSize: CGSize {
        UIView.layoutFittingExpandedSize
    }
}

你可能感兴趣的:(`UICollectionView` 在 iOS12 的BUG,自动布局无效。)