hi i am using UICollectionView and in UICollectionViewCell i need one image (icon) one title and some description. i am new in IOS development i want UICollectionViewCell cell height depending on the content because may be title and image will have specific height but description have different height. can anyone help me to calculate the height of description label. should i use textview for description ?
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);
}