2013-01-10 22 views
1

我有一個和具有類似佈局的UIImage動態調整一個UICollectionViewCell

-------------------- 
|     | 
| LABEL1   | 
| IMAGE   | 
| LABEL2   | 
| ......   | 
| ......   | 
-------------------- 

Label2的具有可變數量的線,小區之間是不同的,我想是能夠自動調整UICollectionView height根據label2 height,讓它「自動填充」單元格。 在iOS中可以做到嗎?

回答

0

您可以重寫以下方法UICollectionViewDelegateFlowLayout來動態計算UICollectionViewCell的高度,根據您的要求設置常量值。

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

    UIFont *fontLabel1 = [UIFont systemFontOfSize:17]; 
    UIFont *fontLabel2 = [UIFont systemFontOfSize:14]; 
    int padding = 5; 
    int maxWidthOfLabel = 300; 
    CGSize maximumLabelSize = CGSizeMake(maxWidthOfLabel, CGFLOAT_MAX); 

    NSString *strLabel1 = @"Label one text";// Get text for label 1 at indexPath 
    NSString *strLabel2 = @"Label two text";// Get text for label 2 at indexPath 

    NSStringDrawingOptions options = NSStringDrawingTruncatesLastVisibleLine | 
    NSStringDrawingUsesLineFragmentOrigin; 

    NSDictionary *attr1 = @{NSFontAttributeName: fontLabel1}; 
    NSDictionary *attr2 = @{NSFontAttributeName: fontLabel2}; 

    // Calculate individual label heights 
    CGFloat heightLabel1 = [strLabel1 boundingRectWithSize:maximumLabelSize 
               options:options 
              attributes:attr1 
               context:nil].size.height; 
    CGFloat heightLabel2 = [strLabel2 boundingRectWithSize:maximumLabelSize 
               options:options 
              attributes:attr2 
               context:nil].size.height; 
    CGSize sizeOfImage = CGSizeMake(50, 50); 

    // Calculate height based on all Views (2 Labels + 1 ImageView) 
    CGFloat height = heightLabel1+heightLabel2+sizeOfImage.height+2*padding; 
    CGFloat width = collectionView.frame.size.width;// Set width 
    CGSize size = CGSizeMake(width, height); 
    return size; 
} 
+2

爲什麼在@Chris詢問UICollectionViewCells時這是被接受的答案?與UITableViewCell不一樣... –

+0

同意Greg。不回答這個問題。 – user2067021

+0

更新了計算UICollectionViewCell高度的答案。 –