0

私は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]; 
} 
+0

このCGSize a = [UIImage imageNamed:imgnum [indexPath.row%4]]を使用しないことをお勧めします。あなたのイメージのサイズとして、デバイスのフレームの高さ以上になると問題が生じ、セルをスクロール可能に拡張します。一度に1つのイメージを表示したいので、デバイスの高さまたはコレクションビューのフレームと同じにコンテンツセルの高さを設定するといいでしょう。後でUIImageview setContentMode:AspectFitを設定すると、画像が1つのセルに収められ、1つのiamgeのスクロールが時間通りに機能します。 –

答えて

0

は、私はあなたがこのCGSizeのA =を使用しないrecommnedう[UIImage imageNamed:imgnum [indexPath.row%4]] 。サイズ;あなたのイメージのサイズとして、デバイスのフレームの高さ以上になると問題が生じ、セルをスクロール可能に拡張します。

  1. 一度に1つのイメージを表示したいので、デバイスの高さまたはコレクションビューのフレームと同じにコンテンツセルの高さを設定します。
  2. 後でUIImageview setContentMode:AspectFitを設定すると、画像が1つのセルに収められ、1つの画像のスクロールが時間通りに機能するようになります。

私があなたのために作成した例を確認してください。 http://www.filedropper.com/collectionviewperpageex

+0

ご協力いただきありがとうございます。このタイプのコレクションビューでは、2つの画像の間でスクロールを解除すると、2つの画像ではなく1つの画像でフレームが停止します。私はそれが最も近いイメージを示したいと思う。 –

+0

次に、page contolとscrollviewのみを使用するか、スクロールインセットを次のページのrectに移動します。 cocacontrols.comのウェブサイトでMediaGalleryプロトタイプを探しましょう –

関連する問題