tutorial source how data collection objective-c xcode uicollectionview uicollectionviewcell uicollectionviewlayout

objective c - source - Paginación vertical UICollectionView con código en Objective-C



uicollectionview header (1)

Le recomiendo que no use este tamaño CGSize a = [UIImage imageNamed: imgnum [indexPath.row% 4]]. Size; como el tamaño de su imagen, si es mayor que la altura del cuadro del dispositivo, creará un problema y expandirá la celda para que se pueda desplazar.

  1. Desea mostrar una imagen a la vez, por lo que yo diría que configure la altura de la celda de contenido igual que el marco de altura del dispositivo o la vista de colección.
  2. Más tarde configure el UIImageview setContentMode: AspectFit para que la imagen se ajuste en una celda y su desplazamiento para una imagen a la vez pueda funcionar.

Mira mi ejemplo que he creado para ti, espero que ayude. http://www.filedropper.com/collectionviewperpageex

Tengo ViewController mycollectionview y creo una collection view UICollectionView en él y establezco el tamaño del marco. Tengo una clase personalizada UICollectionViewCell CollectionViewCell . El tamaño de las imágenes es diferente y solo quiero mostrar una celda al mismo tiempo (cuando no se está desplazando). Aquí está el código 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); }

Y es mi código 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]; }