Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UITableViewCell imageView padding

I would like to set up margins or paddings for UITableView cells imageView, how could I do that? With heightForRowAtIndexPath I can only set rows height. And it just enlarges the image in cell if I increase it.

Here is my cellForRow method

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID] autorelease];
        cell.textLabel.numberOfLines = 1;
        cell.textLabel.font = [UIFont systemFontOfSize:kSystemFontSize];
        cell.accessoryType = UITableViewCellAccessoryNone;
        cell.textLabel.textColor = [UIColor whiteColor];
    }
    cell.textLabel.text = [_dataArray objectAtIndex:indexPath.row];
    cell.imageView.image = [UIImage imageNamed:[_imageArray objectAtIndex:indexPath.row]];
    cell.backgroundColor = [UIColor clearColor];

    return cell;
}

Currently I only know one method how I could do it - shrink the image content of the images using photoshop or similiar program while staying at the same time. But such method would take a lot of time, and I guess there should be easier way to do this.

like image 428
Datenshi Avatar asked Apr 10 '13 11:04

Datenshi


People also ask

How do you insert a space between cells in Tableview?

The way I achieve adding spacing between cells is to make numberOfSections = "Your array count" and make each section contains only one row. And then define headerView and its height. This works great.

What is Uitableview in Swift?

A view that presents data using rows in a single column. iOS 2.0+ iPadOS 2.0+ Mac Catalyst 13.1+ tvOS 9.0+


3 Answers

updated for swift3

cell?.imageView?.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
like image 148
Zayin Krige Avatar answered Oct 21 '22 09:10

Zayin Krige


Without subclassing:

cell.imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, .5, .5);

change the '.5' with the right proportion for your case

like image 32
Jim75 Avatar answered Oct 21 '22 07:10

Jim75


The best solution here is to create your own cell, add image, labels inside of contentView and tweak them how you want.

But there's also another way, again you need to create a subclass from UITableViewCell and override layoutSubviews selector:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(10, 10, 50, 50);
    self.imageView.contentMode = UIViewContentModeCenter;
}
like image 33
kovpas Avatar answered Oct 21 '22 09:10

kovpas