调整TableViewController单元格的大小

时间:2014-04-07 14:32:54

标签: ios objective-c uitableview uiimageview uiimage

我想调整我拥有的所有TableView单元格的图像。 我尝试了这种方法并且它正在工作,但图像的质量却降低了。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ 
//...
         CGSize size = {35,35};
         cell.imageView.image = [self imageWithImage:[UIImage imageNamed:@"image.png"] scaledToSize:size];
//...

}   

//Given a UIImage and a CGSize, this method will return a resized UIImage.
    - (UIImage*)imageWithImage:(UIImage*)image
           scaledToSize:(CGSize)newSize;
    {
        UIGraphicsBeginImageContext( newSize );
        [image drawInRect:CGRectMake(0,0,35,35)];
        UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();

        return newImage;
    }

所以我继续搜索,我发现有人说要添加这种方法

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

但Xcode给我一个错误,这个方法不再可用吗?

如何在不降低质量的情况下调整图像大小?

1 个答案:

答案 0 :(得分:0)

我设法找到一个解决方案,在这里我将解释以防有人需要。

首先创建一个假图像,如白色图像或清晰

cell.imageView.image = [UIImage imageNamed:@"clear.png"];

这就是为什么你必须告诉那个单元格的图像。 现在添加ImageView作为TableView单元格

的子视图
UIImageView *imgView=[[UIImageView alloc] initWithFrame:CGRectMake(20, 5, 35, 35)];
                imgView.backgroundColor=[UIColor clearColor];
                [imgView.layer setCornerRadius:8.0f];
                [imgView.layer setMasksToBounds:YES];
                [imgView setImage:[UIImage imageNamed:account.icon]];
                [cell.contentView addSubview:imgView];

现在好了。如果您不创建虚假图片,则新创建的imgView将与cell.textLabel.text

重叠