UICollectionView不滚动(UICollectionView does not scro

2019-08-31 10:39发布

我有一个UICollectionView设置与UICollectionViewDataSource目前提供6个项目。 这些都是少于需要填补屏幕。 问题是,我的集合视图仅当有足够的项目填满屏幕(10,20测试)滚动。 当显示较少的项目它甚至不会做这种反弹的动画我试图得到的,它只是固定。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateCollectionViewData) name:UIDocumentStateChangedNotification object:nil];

    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc]init];
    flowLayout.itemSize = CGSizeMake(160, 100);
    flowLayout.minimumInteritemSpacing = 0;
    flowLayout.minimumLineSpacing = 0;

    self.collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds collectionViewLayout:flowLayout];
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"Cell"];
    self.collectionView.delegate = self;
    self.collectionView.dataSource = self;
    self.collectionView.bounces = YES;
    [self.view addSubview:self.collectionView];
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return [self.collectionViewData count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
     UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];

    Expense *expense = [self.collectionViewData objectAtIndex:indexPath.row];

    UILabel *label = [[UILabel alloc]initWithFrame:cell.bounds];
    label.text = expense.value;
    label.backgroundColor = [UIColor clearColor];
    label.font = [UIFont fontWithName:@"Miso-Bold" size:30];
    label.textAlignment = NSTextAlignmentCenter;
    [cell addSubview:label];

    cell.backgroundColor = [UIColor colorWithRed:1 - (indexPath.row / 30.0f) green:0 blue:1 alpha:1];

    return cell;
}

谢谢你的帮助!

Answer 1:

bounces ,尽管它的名字,是不是要设置合适的物业。 您还需要设置alwaysBounceVertical和/或alwaysBounceHorizontal 。 从文档:

如果该属性被设置为YES和反弹是YES,垂直拖动被允许即使含量超过滚动视图的边界小 。 默认值是NO。


注意IB混乱的名字.. https://stackoverflow.com/a/18391029/294884



Answer 2:

在属性检查器中的集合视图“退回”和“退回垂直”故事板应该进行检查。



Answer 3:

的高度设置UICollectionView到的大小UIView会让你的滚动问题禁用。 如果UICollectionView是568个像素高那么它将永远只需要滚动,如果有超过568像素价值在它的内容。 应将其设置到它被包含在视图(相同的宽度)的高度。

希望它可以帮助你。



文章来源: UICollectionView does not scroll