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.
This works on iOS 7:
Without subclassing:
change the '.5' with the right proportion for your case
updated for swift3
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 overridelayoutSubviews
selector: