2013-04-19 8 views
5

enter image description hereTworzenie układów kołdra w UICollectionView

muszę tego typu komórki UICuollectionView.Each mieć jeden obraz i wysokości komórek label.The i szerokość zależy od treści tej etykiety.

- (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); 
} 

Ale moje komórki stają się ściśnięte. enter image description here

czy możesz mi powiedzieć, jaki jest problem?

+0

można opublikować link do GitHub ramach którego używasz? – Mundi

Odpowiedz

0

Może wpisałeś width gdzie chciałeś height w tej linii:

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

Dzięki za odpowiedź, tak, powiedziałem, że nadal tam jest wydawane ri8 bt. Podałem szerokość i wysokość tak samo. – Himanshu

Powiązane problemy