UITableViewCell imageView填充

时间:2013-04-10 11:20:11

标签: ios cocoa-touch

我想为UITableView单元格imageView设置边距或填充,我该怎么做? 使用heightForRowAtIndexPath我只能设置行高。如果我增加它,它只会放大单元格中的图像。

这是我的cellForRow方法

- (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;
}

目前我只知道一种方法如何做到这一点 - 在同时停留的同时使用photoshop或类似程序缩小图像的图像内容。但是这种方法需要花费很多时间,我想应该有更简单的方法来做到这一点。

4 个答案:

答案 0 :(得分:17)

没有子类化:

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

更改' .5'适合您案件的比例

答案 1 :(得分:9)

这里最好的解决方案是创建自己的单元格,在contentView内添加图片,标签,然后根据需要进行调整。

但也有另一种方法,你需要再次从UITableViewCell创建一个子类并覆盖layoutSubviews选择器:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(10, 10, 50, 50);
    self.imageView.contentMode = UIViewContentModeCenter;
}

答案 2 :(得分:3)

适用于iOS 7:

- (void)layoutSubviews
{
    [super layoutSubviews];
    CGRect imageViewFrame = self.imageView.frame;
    imageViewFrame.origin.x = 10;
    imageViewFrame.origin.y += 5;
    imageViewFrame.size.height -= 10;
    imageViewFrame.size.width -= 10;
    self.imageView.frame = imageViewFrame;
}

答案 3 :(得分:0)

为swift3更新了

cell?.imageView?.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)