私はViewController mycollectionview
を持っていて、その中にUICollectionView collection view
を作成し、サイズをフレームサイズに設定しました。カスタムUICollectionViewCell CollectionViewCell
クラスがあります。画像サイズは異なりますので、同時に(スクロールしない)1つのセルを表示したいだけです。ここ はmycollectionview
コードです:UICollectionView Objective-Cでコードを使用した垂直ページング
- (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];
}
このCGSize a = [UIImage imageNamed:imgnum [indexPath.row%4]]を使用しないことをお勧めします。あなたのイメージのサイズとして、デバイスのフレームの高さ以上になると問題が生じ、セルをスクロール可能に拡張します。一度に1つのイメージを表示したいので、デバイスの高さまたはコレクションビューのフレームと同じにコンテンツセルの高さを設定するといいでしょう。後でUIImageview setContentMode:AspectFitを設定すると、画像が1つのセルに収められ、1つのiamgeのスクロールが時間通りに機能します。 –