2015-10-07 56 views
1

我正在使用uicollection視圖來顯示網格視圖格式的圖像。我能夠顯示單元格,但高度爲&寬度不增加的iPad它只顯示爲小塊。請告訴我如何使它動態。如何在iOS中爲uicollection view cell製作動態大小?

[![在這裏輸入的形象描述] [1] [1]

我已經使用瞭如下使動態代碼。

編譯標誌Collection視圖佈局事情

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { 
    if (collectionView==self.album_collection_view) { 
     return 2.0; 
    } 
    else 
     return 2.0; 
} 

- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { 
    if (collectionView==self.album_collection_view) { 
     return 2.0; 
    } 
    else 
     return 2.0; 
} 
// Layout: Set Edges 
- (UIEdgeInsets)collectionView: 
(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { 
    // return UIEdgeInsetsMake(0,8,0,8); // top, left, bottom, right 
    if (collectionView==self.album_collection_view) { 
     return UIEdgeInsetsMake(5,0,0,0); 
    }// top, left, bottom, right 
    else 
     return UIEdgeInsetsMake(5,0,0,0); 

} 

請告訴我,我怎樣才能解決這個問題呢?

回答

-1

如果您想增加單元格高度和寬度,您必須使用sizeForItemAtIndexPath方法。爲此,您必須添加UICollectionViewDelegateFlowLayout委託人。

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return CGSizeMake(100, 100); 
} 
+0

它會爲所有設備製作dynmaic尺寸。 – Techiee

+0

如果你想在所有設備的每一行顯示4單元格,然後通過'返回CGSizeMake(collectionView.frame.size.width/4,collectionView.frame.size.width/4);'所以在所有設備按照你的collectionview寬度將減少並增加您的單元格高度和寬度。如果你想在特定的設備上顯示一些特定的高度和寬度,那麼你必須檢查設備,如果它的5s,6或ipad,並根據您的需要指定高度。 –

1

這裏是解決

-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 

YourCollectionCell * cell = (YourCollectionCell *) [YourCollectionViewObj cellForItemAtIndexPath:indexPath]; 

     if (cell == nil) { 

      NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"YourCollectionCell" owner:self options:nil]; 
      cell = [topLevelObjects objectAtIndex:0]; 
      cell.frame = CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 20); 
      // SET YOUR CONTENT 
      [cell layoutIfNeeded]; 

     } 

     CGSize CellSize = [cell systemLayoutSizeFittingSize:UILayoutFittingCompressedSize withHorizontalFittingPriority:UILayoutPriorityDefaultHigh verticalFittingPriority:UILayoutPriorityDefaultLow]; 


     return CellSize;} 

如果上述方案不能滿足您的需要,爲了得到你想要的東西,你應該創建自己的UICollectionViewLayout(或者UICollectionViewFlowLayout)的子類,在這裏執行所有將每個項目放在正確的框架中所需的計算。

看看這裏的great tutorial和這裏爲something similar to what you want

+0

什麼是YourCollectionViewObj? – Techiee

+0

@deepakkumar您的收藏視圖 –

+0

其對象我沒有爲我收集View容器任何separte筆尖 – Techiee