[英]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
或.top
和automaticallyAdjustsScrollViewInsets = 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
一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.