0

我有一個ViewController mycollectionview並在其中創建一個UICollectionView collection view並將大小設置爲幀大小。我有一個自定義UICollectionViewCell CollectionViewCell類。圖像大小不同,我想同時顯示一個單元格(不滾動時)。 這裏是mycollectionview代碼:UICollectionView垂直分頁與代碼目標-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]]。size;作爲圖像大小,如果超過設備框架高度,將會產生問題並將該單元展開爲可滾動。您希望一次顯示一個圖像,因此我可以將contentcell高度設置爲與設備高度或collectionview的框架相同。稍後設置UIImageview setContentMode:AspectFit,以便圖像適合一個單元格,並且在一段時間內可以適用於一個圖元的滾動。 –

回答

0

我recommned你不要用這個CGSize A = [UIImage的imageNamed:imgnum [indexPath.row%4] 。尺寸;作爲圖像大小,如果超過設備框架高度,將會產生問題並將該單元展開爲可滾動。

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

查看我爲您創建的示例,希望它有所幫助。 http://www.filedropper.com/collectionviewperpageex

+0

感謝您的幫助。在這種類型的收集視圖,你說,如果釋放滾動2圖像之間,屏幕停止在2幀圖像不是1圖像。我想要它顯示最近的圖像。 –

+0

然後僅使用頁面控件和滾動視圖,或者手動將滾動插入移動到下一頁矩形。在cocacontrols.com網站上查找MediaGallery原型 –