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

希望这有助于!

相关问题