привет, я использую UICollectionView, а в UICollectionViewCell мне нужно одно изображение (значок), одно название и некоторое описание. Я новичок в разработке IOS. Я хочу, чтобы высота ячеек UICollectionViewCell зависела от содержимого, потому что может быть название, а изображение будет иметь определенную высоту, но описание имеет разную высоту. может кто-нибудь помочь мне рассчитать высоту описания этикетки. Должен ли я использовать textview для описания?Динамическая высота UICollectionViewCell в зависимости от содержимого
NSDictionary *service1 = [NSDictionary dictionaryWithObjectsAndKeys:
@"Lorem ipsum dolor sit",@"title",
@"Lorem ipsum dolor sit is simply dummy text Lorem ipsum dolor sit is simply dummy text Lorem ipsum dolor sit is simply dummy text Lorem ipsum dolor sit is simply dummy text Lorem ipsum dolor sit is simply dummy text",@"Description",
@"image1.png",@"image",
nil
];
NSDictionary *service2 = [NSDictionary dictionaryWithObjectsAndKeys:
@"Lorem ipsum dolor sit", @"title",
@"Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit Lorem ipsum dolor sit",@"Description",
@"image2.png",@"image",
nil
];
dataarray = [[NSMutableArray alloc] initWithObjects:service1, service2, nil];
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"Cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath] ;
UIImage * img = [UIImage imageNamed:[[dataarray objectAtIndex:indexPath.row] objectForKey:@"image"]];
UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(10,10,70,70)];
iv.image = img;
UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 90, 50, 20)];
[titleLabel setText:[[dataarray objectAtIndex:indexPath.row] objectForKey:@"title"]];
titleLabel.textColor = [UIColor blackColor];
titleLabel.font = [UIFont fontWithName:@"Arial" size:8.5];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = NSTextAlignmentLeft;
[cell addSubview:titleLabel];
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
UILabel *desclabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, screenWidth-20, 120)];
[desclabel setText:[[dataarray objectAtIndex:indexPath.row] objectForKey:@"Description"]];
titleLabel.textColor = [UIColor blackColor];
titleLabel.font = [UIFont fontWithName:@"Arial" size:8.5];
titleLabel.backgroundColor = [UIColor clearColor];
titleLabel.textAlignment = NSTextAlignmentLeft;
[titleLabel sizeToFit];
[cell addSubview:titleLabel];
[cell addSubview:desclabel];
[cell addSubview:iv];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
// Adjust cell size for orientation
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
if (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation])) {
return CGSizeMake(screenWidth-10, 170.0f);
}
return CGSizeMake(screenWidth-10, 190.0f);
}
http://stackoverflow.com/questions/14255692/dynamically-resizing-a-uicollectionviewcell – Manthan
@Manthan У меня проблема с текстом описания. как проверить динамическую высоту метки описания? –
: Вместо этого подсчитайте размер текста описания и передайте этот размер напрямую. – Manthan