6

以下は、セーフ エリア レイアウト ガイドを有効にして、スーパービューの上、左、右、および下に制約されたコレクション ビューです。

ここに画像の説明を入力

コレクション ビュー ヘッダーをステータス バーのに表示したいと考えています。コントローラーの main のサイズ インスペクターでSafe Area Layout Guideviewのチェックを外し、次のコードを追加することで、iPhone 4 - 8+ の画面サイズでこれを達成しました。

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

これは、iPhone X 以外のビュー サイズに適しています。

ここに画像の説明を入力

ただし、iPhone X の場合、これは次の出力につながります。

ここに画像の説明を入力

iPhone X には、ステータス バーの独自の寸法があります。上部インセットをさらに調整することはできますが、他のデバイス サイズをオーバーオフセットします。この動作を実現するためのよりエレガントな方法があるかどうか疑問に思っています。

4

5 に答える 5

2

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
}
于 2018-02-28T14:11:25.127 に答える
2

これで十分です

collectionView.contentInsetAdjustmentBehavior = .never
于 2020-12-25T16:01:23.140 に答える