1

我想設置的寬度取決於屏幕寬度UICollectionViewCell。當它在縱向模式下時,我想顯示3個單元格,如果在橫向上,我想顯示4個單元格。UICollectionView顯示不同的單元格取決於方向

我也想有細胞之間的一些填充,但是這個代碼下面沒有幫助我:

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 
    return UIEdgeInsetsMake(20, 20, 0, 20); 
} 

我認爲它應該在頂部,左側和小區的右側添加填充。

如果我看到那麼人像模式:

***cell*** *padding* ***cell*** *padding* ***cell*** 

如果景觀:

***cell*** *padding* ***cell*** *padding* ***cell*** *padding* ***cell*** 

所以填充應該是每次都一樣大小不同的方向。

比方說,這應該是20pt

此外,我要添加的每個細胞超過20磅的填充。

我應該寫一些自定義流佈局嗎?

回答

0

你應該無效佈局時,方向/尺寸課改:

- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { 
    [super traitCollectionDidChange:previousTraitCollection]; 

    if (self.traitCollection.horizontalSizeClass != previousTraitCollection.horizontalSizeClass) { 
     [self.collectionView.collectionViewLayout invalidateLayout]; 
    } 
} 

然後調整你collectionView:layout:insetForSectionAtIndex:適當的返回值(我挑選隨機這裏值):

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{ 
    if (self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) { 
     return UIEdgeInsetsMake(20, 20, 0, 20); 
    } else { 
     return UIEdgeInsetsMake(40, 40, 0, 40); 
    } 
} 
+1

是的,但問題是我必須在單元格之間有很大的空間間距,我想每隔一段時間就要在單元格之間放置相同的大小,讓我們說20點,所以即使我旋轉屏幕,我也應該增加大小例如從3個單元到4個單元的每一行的單元的數量。所以像我每次顯示的填充應該是相同的。我只需要拉伸細胞。 –

1

對於Swift 3:

  1. 用你的UICollectionView創建一個@IBOutlet(我的稱爲picCol lectionView)
  2. 把這個代碼在您的viewDidLoad中

    override func viewDidLoad() { 
    super.viewDidLoad() 
    
    let itemSize = UIScreen.main.bounds.width/3 - 2 
    
    let layout = UICollectionViewFlowLayout() 
    layout.itemSize = CGSize(width: itemSize, height: itemSize) 
    layout.minimumInteritemSpacing = 2 
    layout.minimumLineSpacing = 2 
    
    picCollectionView.collectionViewLayout = layout 
    

    }

  3. 列數跨過將與設備方向

  4. 你可以通過改變minimumInteritemSpacing調整填充自動改變and minimumLineSpacing

希望這有助於!

相關問題