簡體   English   中英

添加導航欄時縮小集合視圖

[英]Shrink Collection View when Navigation Bar added

在我的iOS swift應用程序中,我創建了具有自定義UICollectionViewLayout的UIColletctionViewController,該UICollectionViewLayout創建了可水平滾動的父子網格布局。 計算此布局的高度,使其適合我的屏幕高度。

override var collectionViewContentSize: CGSize {
    return CGSize(
        width: someWidth,
        height: collectionView?.frame.height ?? 0
    )
}

當我將集合視圖控制器嵌入導航欄中時,整個集合視圖都會向下移動,但是collectionView?.frame.height保持不變,因此我的內容會向下溢出。

在此處輸入圖片說明

在沒有導航欄的情況下,如何獲得減少的可用空間的高度?

如果您的視圖控制器設置edgesForExtendedLayout.all.topautomaticallyAdjustsScrollViewInsets = true (這貌似是這樣),那么你的CollectionView的contentInset得到調整,以補償導航欄的高度,使檢查該插圖。

假設您的collectionView延伸到頂部(從導航欄后面開始),則得到可見的高度:

let visibleHeight = collectionView.frame.height - collectionView.contentInset.top

在您的情況下,您可以執行以下操作:

override var collectionViewContentSize: CGSize {
    return CGSize(
        width: someWidth,
        height: collectionView.frame.height - collectionView.contentInset.top
    )
}

另一個選項是設置edgesForExtendedLayout = UIRectEdge(rawValue: UInt(0))然后視圖控制器的視圖將不會延伸到任一邊緣,並且將在導航欄下edgesForExtendedLayout = UIRectEdge(rawValue: UInt(0)) ,因此,集合視圖的框架將位於可見范圍內,您可以使用就像您的示例中的collectionViewContentSize一樣。

我實際上找到了一個非常簡單的解決方案,對我來說很有效。 我在集合視圖控制器的“屬性”檢查器中未選中“頂部欄下”選項。

UICollectionViewController

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM