我设置了UICollectionView
,其中UICollectionViewDataSource
目前提供了六个项目。
这些比填充屏幕所需的少。问题是我的集合视图仅在有足够的项目填充屏幕时滚动(用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;
}
感谢您的帮助!
答案 0 :(得分:167)
bounces
,尽管它的名字,但不是正确的属性。您还需要设置alwaysBounceVertical
和/或alwaysBounceHorizontal
。来自文档:
如果此属性设置为YES并且跳出为YES,则即使内容小于滚动视图的边界,也允许垂直拖动。默认值为NO。
请注意IB中令人困惑的名称.. https://stackoverflow.com/a/18391029/294884
答案 1 :(得分:10)
对于集合视图的属性检查器中的故事板,应选中“Bounces”和“Bounces vertically”。
答案 2 :(得分:4)
将UICollectionView
的高度设置为UIView
的大小会使您的滚动问题无效。如果UICollectionView
的高度为568像素,则只有在其中包含超过568像素的内容时才需要滚动。您应该将其设置为包含它的视图的高度(与宽度相同)。
希望它对你有所帮助。