【问题标题】:CollectionView header content under status bar状态栏下的 CollectionView 标题内容
【发布时间】:2018-08-02 19:38:27
【问题描述】:

这是一个集合视图,限制在超级视图的顶部、左侧、右侧和底部,并启用了安全区域布局指南:

我希望在状态栏下方显示我的收藏视图标题。我通过在控制器主 view 的尺寸检查器中取消选中 Safe Area Layout Guide 并添加以下代码来实现 iPhone 4 - 8+ 屏幕尺寸:

collectionView.contentInset = UIEdgeInsets(top: -20, left: 0, bottom: 0, right: 0)

这对于非 iPhone X 视图尺寸来说看起来很棒:

但是,对于 iPhone X,这会导致以下输出:

iPhone X 的状态栏有自己的尺寸。进一步调整顶部插图确实有效,但会过度偏移其他设备尺寸。我想知道是否有更优雅的方式来实现这种行为。

【问题讨论】:

    标签: ios uicollectionview iphone-x safearealayoutguide


    【解决方案1】:

    找到解决办法:

    collectionView.contentInset.top = -UIApplication.shared.statusBarFrame.height
    

    【讨论】:

      【解决方案2】:

      以前的解决方案有效,但这可能是最简单的一个:

      collectionView.contentInsetAdjustmentBehavior = .never

      【讨论】:

      • 确实如此,但这会导致底部进入底部安全区域。这不是您可能想要的。
      【解决方案3】:

      你应该为 iphone X 使用 safeAreaInsets

      if #available(iOS 11.0, *) {
          if let top = UIApplication.shared.keyWindow?.safeAreaInsets.top {
              collectionView.contentInset = UIEdgeInsets(top: -top, left: 0, bottom: 0, right: 0)
          }
      } else {
          // Fallback on earlier versions
          collectionView.contentInset.top = -UIApplication.shared.statusBarFrame.height
      }
      

      【讨论】:

        【解决方案4】:

        这样就可以了

        collectionView.contentInsetAdjustmentBehavior = .never
        

        【讨论】:

        • 这必须被标记为接受的答案,你是我的英雄!
        【解决方案5】:

        添加2个约束:

        1) 视图 - 超级视图

        2) 视图 - 安全区域

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-01
          相关资源
          最近更新 更多