2014-05-21 79 views
31

我在Interface Builder中有這種安排,所有屬性都設置爲零。UICollectionVIew:我如何刪除頂部第一個單元格的行上的空間

enter image description here

然而,當我器件和模擬器上運行它,它看起來像這樣

enter image description here

哪裏單元上方的空間從何而來?

所以我嘗試在代碼中設置這些屬性UICollectionViewFlowLayout這樣

UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; 
    layout.headerReferenceSize = CGSizeZero; 
    layout.footerReferenceSize = CGSizeZero; 
    layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0); 
    layout.minimumInteritemSpacing = 0; 
    layout.minimumLineSpacing = 0; 
    layout.itemSize = CGSizeMake(103, 119); 

    self.calendarView.collectionViewLayout = layout; 

,但我有沒有運氣。

我該如何擺脫那個空間? 謝謝。

回答

93

UICollectionView是具有contentInset財產的UIScrollView類的後裔,設定-20頂部邊界解決問題

[self.calendarView setContentInset:UIEdgeInsetsMake(-20, 0, 0, 0)]; 

然而,的問題來自於UIViewController的automaticallyAdjustsScrollViewInsets財產。 通過文檔:

缺省值是YES,這允許視圖控制器來調整響應於由所述狀態欄,導航欄所消耗的屏幕區域的滾動視圖的插圖,和工具欄或標籤欄。如果您想要自己管理滾動視圖插入調整,請將其設置爲NO。

這就是爲什麼我們爲狀態欄調整內容插入的原因。禁用自動調整比結果圖中不匹配的手動設置值更好。

[self setAutomaticallyAdjustsScrollViewInsets:NO]; 
+0

它無法正常工作。 – SaintTail

+0

雖然它導致我正確的答案。 (-20,0,0,0)我必須設置邊緣插入。不知道爲什麼它是需要的。但是,謝謝。你可以編輯你的答案,以便我可以投票。 – SaintTail

+0

好的,我盡力幫助:)祝你好運! – Seryozha

7

你也可以去

[self.calendarView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
[self setAutomaticallyAdjustsScrollViewInsets:NO]; 

有默認集合視野頭滾動空間加在集合視圖,你不需要從頂部添加-20,因爲它可以在設備上反映問題

10

下面是一些調整,迅速回答:

我有采取集合視圖佔據了一小部分視野。我用:

self.automaticallyAdjustsScrollViewInsets = false 

刪除頂部間距,搞亂了我的佈局。這段代碼並沒有爲我工作:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) 

而且也不是這一個:

self.paperCollectionView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0) 

但因爲我沒有使用UICollectionViewController可能是,我只是用UICollectionView。

下面的代碼的較大部分給予更多的上下文: enter image description here

+0

您是否找到解決方案?我只能看到問題中的增強。我使用'UIViewController'而不是'UICollectionViewControllel' – umair151

+0

所以我使用'self.automaticallyAdjustsScrollViewInsets = false',並照顧我的間距問題。你能多解釋一下,也許我可以幫助更多? –

61

另一種方式是選擇你的ViewController和取消選中該複選框調整滾動查看插圖在界面生成器:

enter image description here

它基本上與以下代碼行相同。但是您必須立即在界面構建器中看到您的更改。

automaticallyAdjustsScrollViewInsets = false 
+2

它完成這項工作。謝謝 –

1

這個答案是怪異,但它的作品,如果你在Interface Builder工作,有一個集合查看嵌入視圖控制器是一個標籤欄控制器的控制是一個根視圖控制器下導航控制器。

  • 添加工具欄到具有收藏查看
  • 移動工具欄在層次結構,使得它上面的集合視圖

如果工具欄上面的集合視圖的視圖控制器,從原型集合視圖單元的頂部到集合視圖將沒有空間。如果沒有工具欄或工具欄位於集合視圖下方,則集合視圖頂部與集合視圖單元之間會有空間。在故事板預覽和運行應用程序時都是如此。 Table Views發生同樣類型的事情。

這是最近在Xcode 8.3.3版本 Collection View Cells and Toolbar Dependency

0

斯威夫特測試3:

self.automaticallyAdjustsScrollViewInsets =假

相關問題