`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
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。