2013-01-10 18 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高度的答案。 –