如何在屏幕左侧显示第一部分和右侧第二部分的 UICollectionView

Posted

技术标签:

【中文标题】如何在屏幕左侧显示第一部分和右侧第二部分的 UICollectionView【英文标题】:How to show UICollectionView with first section on left side and second section right side of the screen 【发布时间】:2018-05-31 13:19:05 【问题描述】:

我想创建一个 UICollectionView,其第一部分位于屏幕左侧,第二部分位于屏幕右侧,如两列。对于每个部分,我需要一个部分标题。 有没有办法实现这个或任何替代方式。

【问题讨论】:

我认为,如果您将项目宽度设置为 collectionViewwidth/2,您可以将 section1 的元素成对放入 indexpath.row,并将第 2 部分的元素放入赔率 indexPath.row 您可以使用自定义布局。 @ReinierMelian 实际上我需要这样 - 我已经用图片更新了问题。 【参考方案1】:

你需要使用UICollectionViewDelegateFlowLayoutMethods

extension HomeVC: UICollectionViewDelegateFlowLayout

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat
    return 0


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat 
    return 16


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
    return CGSize(width: (collectionView.bounds.size.width)/2 - 8  , height: (collectionView.bounds.size.width)/2 )



minimumInteritemSpacingForSectionAt 方法是单元格之间的间距。

【讨论】:

【参考方案2】:
- (void)viewDidLoad 
    [super viewDidLoad];

    self.data = @[@[[UIColor blackColor],[UIColor blackColor],[UIColor blackColor]],        //section 1
                  @[[UIColor yellowColor],[UIColor yellowColor],[UIColor yellowColor]]];    //section 2

    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
    [self.collectionView setContentInset:UIEdgeInsetsMake(8, 8, 8, 8)];
    [self setupCollectionViewCellSize];


- (void)setupCollectionViewCellSize 
    int numOfCell = 2, paddingBetweenCell = 8;
    float width = [UIScreen mainScreen].bounds.size.width - (self.collectionView.contentInset.left + self.collectionView.contentInset.right);   //minus left and right Inset
    float cellWidth = (width - (numOfCell * paddingBetweenCell)) / numOfCell;
    self.cellSize = CGSizeMake(cellWidth, cellWidth);


- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
    return self.cellSize;


- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView 
    return 1;


- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 
    return [[self.data objectAtIndex:0] count] + [[self.data objectAtIndex:1] count];


- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath 
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
    if(indexPath.item%2==0) 
        cell.backgroundColor = [[self.data objectAtIndex:0] objectAtIndex: (indexPath.item%[[self.data objectAtIndex:0] count])];
     else 
        cell.backgroundColor = [[self.data objectAtIndex:1] objectAtIndex: (indexPath.item%[[self.data objectAtIndex:1] count])];
    
    return cell;

【讨论】:

以上是关于如何在屏幕左侧显示第一部分和右侧第二部分的 UICollectionView的主要内容,如果未能解决你的问题,请参考以下文章

我将如何做第一部分和第二部分?

具有特定条件的 MySQL GROUP BY

在最后一张幻灯片之后单击屏幕右侧的第 1 个/在第 2 个幻灯片之后的第 1 个中单击屏幕左侧

PHP应用程序在MVC模式中构建安全API

同一视图中的 SwiftUI 动画显示方式不同

如何在移动屏幕上的文本顶部对齐右侧图像