gpt4 book ai didi

ios - UICollectionView 显示两行,但我只想要一行

转载 作者:行者123 更新时间:2023-11-28 22:05:29 24 4
gpt4 key购买 nike

我在使用UICollectionView的时候遇到了一个奇怪的错误,看下图:

第三个单元格似乎以某种方式显示在第二个单元格下方,而第三个单元格的位置原来是空的。

enter image description here

当我 ScrollView 然后返回(或重新加载 View )时,它变成正确的:

enter image description here

这是我使用的代码:

#pragma mark - UICollectionView Datasource
- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section {

return datas.count;
}

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

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath: (NSIndexPath *)indexPath {

static NSString *cellId = @"floorCell";
FloorCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];
NSDictionary *dic = [datas objectAtIndex:indexPath.row];
cell.goodImageView.imageURL = [NSURL URLWithString:[dic objectForKey:@"img"]];
cell.goodLabel.text = [dic objectForKey:@"title"];
return cell;

}

而我使用的布局是UICollectionViewFlowLayout,布局委托(delegate)如下:

#pragma mark – UICollectionViewDelegateFlowLayout
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize retval = CGSizeMake(172 / 2.0, [FloorCollectionViewCell getHeight]);
return retval;
}


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

而我想知道是什么原因以及如何解决这个问题?谢谢!

初始化collectionView的代码:

    UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
layout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(50, 0, 278, bottomView.frame.size.height) collectionViewLayout:layout];
collectionView.backgroundColor = [UIColor clearColor];
[collectionView registerClass:[FloorCollectionViewCell class] forCellWithReuseIdentifier:@"floorCell"];
collectionView.dataSource = self;
collectionView.delegate = self;
[bottomView addSubview:collectionView];

ps:我想我已经通过将 collectionView 的高度更改为单元格的高度而不是整个灰色 super View 的高度来解决问题。但我仍然不知道原因,灰色的 superView 的高度不够大,无法容纳两个单元格!

改变的代码:

collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(50, 0, 278, [FloorCollectionViewCell getHeight])  collectionViewLayout:layout];

最佳答案

我不知道是否还有必要再回答这个问题,但是为了将来,您可以通过在 Collection View 本身上设置一个高度限制来解决这个问题strong> 这将强制 Collection View 不进入多行模式。这通常发生在您设置了具有不同优先级的自动布局约束并且 Collection View 有足够的空间展开时。

关于ios - UICollectionView 显示两行,但我只想要一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24131924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com