objective c - 在Objective-C中使用UICollectionView垂直分頁



xcode uicollectionviewcell (1)

我會建議你不要使用這個CGSize a = [UIImage imageNamed:imgnum [indexPath.row%4]]。size; 作為你的圖像大小,如果超過設備的幀高度,將會產生一個問題,並將該單元展開成為可滾動的。

  1. 您想要一次顯示一個圖像,所以我會說設置contentcell高度相同的設備高度或collectionview的框架。
  2. 稍後設置UIImageview的setContentMode:AspectFit所以圖像適合在一個單元格和您的滾動一個圖像的時間可以工作。

檢查我為你創建的例子,希望它有幫助。 http://www.filedropper.com/collectionviewperpageex

我有一個ViewController mycollectionview並在其中創建一個UICollectionView collection view ,並將大小設置為幀大小。 我有一個自定義UICollectionViewCell CollectionViewCell類。 圖像大小是不同的,我想只顯示一個單元格在同一時間(當不滾動)。 這是mycollectionview代碼:

- (void)viewDidLoad
{
    [super viewDidLoad];
    imgnum = @[@"1.jpg",@"2.jpg",@"3.jpeg",@"4.jpg"];
    UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new];
    layout.itemSize = CGSizeMake(80.0, 80.0);
    collectionview = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
    collectionview.translatesAutoresizingMaskIntoConstraints = NO;
    collectionview.delegate = self;
    collectionview.dataSource = self;
    collectionview.bounces = false;
    [collectionview registerClass:[CollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
    [self.view addSubview:collectionview];
{

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    CollectionViewCell *cell = [collectionview dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
    cell.pic.image = [UIImage imageNamed:imgnum[indexPath.row%4]];
    cell.lab.text = @"Eiffel";
    return cell;
}

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
    float w = self.view.frame.size.width;
    CGSize a = [UIImage imageNamed:imgnum[indexPath.row%4]].size;
    float aspect = a.width/a.height;
    return CGSizeMake(w, w * 1/aspect);
}

這是我的CollectionViewCell代碼:

- (void)initialize
{
    _pic = [UIImageView new];
    _pic.translatesAutoresizingMaskIntoConstraints=false;
    [self.contentView addSubview:_pic];
    _lab = [UILabel new];
    _lab.textColor = [UIColor blackColor];
    _lab.translatesAutoresizingMaskIntoConstraints = false;
    [self.contentView addSubview:_lab];
}




uicollectionviewlayout