0

我有一个带有文本和图像的标准(即不是自定义)TableView 单元格,问题是我的图像大小不同,我想将它们放入 UIViewContentModeScaleAspectFill 之类的东西中。我只是希望 UIImage 为 54x54 而不是一直调整大小 - 我只希望它们是正方形的!

那里有很多想法,但没有一个可行,最接近我的工作但图像位于文本之上(它添加了另一个图像作为子视图)。

我不热衷于使用自定义单元格,因为我使用编辑模式来拖动东西,而且我还没有用自定义单元格弄清楚这一点。

编辑

我最近尝试过;

UIImage *tempImage = [UIImage imageWithData:data];
CGSize size = CGSizeMake(54, 54);
UIGraphicsBeginImageContext(size);
[tempImage drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
cell.imageView.image = scaledImage;

我在 cellForRow 中有这个,我希望这样做;

cell.imageView.contentMode = UIViewContentModeScaleAspectFill;

这仅适用于自定义单元格;

- (void)layoutSubviews {
    [super layoutSubviews];
    self.imageView.frame = CGRectMake(0,0,54,54);
}

这很好用,但它涵盖了文本;

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)];
imgView.backgroundColor=[UIColor clearColor];
[imgView.layer setCornerRadius:8.0f];
[imgView.layer setMasksToBounds:YES];
[imgView setImage:[UIImage imageWithData: imageData]];
[cell.contentView addSubview:imgView];

这显示了我遇到的确切问题;

堆栈溢出问题

另一个编辑

好的,这行得通,谢谢;

[cell setIndentationWidth:54];
[cell setIndentationLevel:1];

UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)];
imgView.backgroundColor=[UIColor clearColor];
[imgView.layer setMasksToBounds:YES];
[imgView setImage:myImages[indexPath.row]];
[cell.contentView addSubview:imgView];
4

1 回答 1

1

我建议您继承 UITableViewCell 并创建自己的自定义单元格:D

但是,无论如何...尝试添加这个

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

UIImageView *imgView = nil;
if (cell == nil)
{
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier];

    imgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 54, 54)];
    imgView.backgroundColor=[UIColor clearColor];
    imgView.contentMode = UIViewContentModeScaleAspectFill;
    imgView.tag = 123;

    [cell.contentView insertSubview:imgView atIndex:0];
    [cell setIndentationWidth:54];
    [cell setIndentationLevel:1];
}
else
{
    imgView = (UIImageView*)[cell.contentView viewWithTag:123];
}
imgView.image = [UIImage imageNamed:@"myImage"];
于 2013-09-10T21:21:32.903 回答