2013-04-19 3 views
5

enter image description here私は1枚の画像を持っているとlabel.Theセルの高さと幅は、そのラベルのテキストに依存UICuollectionView.Each細胞のこのタイプを必要とするUICollectionView

にキルトレイアウトを作成します。

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:   (NSIndexPath *)indexPath { 

    CollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"kCellID" forIndexPath:indexPath]; 
if(cell == nil){ 
    cell = [[[NSBundle mainBundle] loadNibNamed:@"CollectionViewCell" owner:self options:nil] lastObject]; 
} 
cell.backgroundColor = [UIColor redColor]; 
cell.image.image = [UIImage imageNamed:[self.arrPhotos objectAtIndex:indexPath.row]]; 
[cell.image setFrame:CGRectMake(cell.image.frame.origin.x, cell.image.frame.origin.y, cell.image.frame.size.width,100)]; 
float f = [self getHeightCalculateForTheText:[arrText objectAtIndex:indexPath.row] andwidth:96]; 
[cell.label setFrame:CGRectMake(0,100,96, f)]; 
cell.label.text = [arrText objectAtIndex:indexPath.row]; 
[cell setFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, cell.frame.size.width+f-20+10)]; 
return cell; 
} 

- (CGSize) blockSizeForItemAtIndexPath:(NSIndexPath *)indexPath { 
if(indexPath.row >= self.arrPhotos.count) 
    NSLog(@"Asking for index paths of non-existant cells!! %d from %d cells", indexPath.row, self.arrPhotos.count); 
float f = [self getHeightCalculateForTheText:[arrText objectAtIndex:indexPath.row] andwidth:96]; 

if (f > 0 && f< 30) 
    return CGSizeMake(1, 2); 
else if (f > 30 && f< 60) 
    return CGSizeMake(1, 3); 
else if (f > 60 && f< 90) 
    return CGSizeMake(1, 4); 
else if (f > 90 && f< 120) 
    return CGSizeMake(1, 5); 
else if (f > 120 && f< 150) 
    return CGSizeMake(1, 6); 
else if(f > 150 && f< 180) 
    return CGSizeMake(1, 7); 

return CGSizeMake(1,1); 
} 

しかし、私の細胞は圧迫されています。 enter image description here

あなたは私に問題の原因を教えていただけますか?あなたはこの行でheightを望んでいたところ

+0

は、あなたが使用しているフレームワークにgithubのリンクを投稿することができますか? – Mundi

答えて

0

はたぶん、あなたはwidthを入力:

[cell setFrame:CGRectMake(cell.frame.origin.x, 
          cell.frame.origin.y, 
          cell.frame.size.width, 
          cell.frame.size.width+f-20+10)]; 
+0

返事ありがとう、ええ、あなたはまだそこに問題を起こしていると言っています。同じ幅と高さを与えました。 – Himanshu

関連する問題