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.
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.
A view that presents data using rows in a single column. iOS 2.0+ iPadOS 2.0+ Mac Catalyst 13.1+ tvOS 9.0+
updated for swift3
cell?.imageView?.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
Without subclassing:
cell.imageView.transform = CGAffineTransformScale(CGAffineTransformIdentity, .5, .5);
change the '.5' with the right proportion for your case
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;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With