改变UITableViewCell的UIImageView大小

UITableViewCell 自带UIImageView,可以在上面放图片,非常方便,不过有时图片太大,与其他的Label什么的很不协调。所以只能自己自己调整ImageView的大小。

首先继承UITableViewCell,建立自己的类CustomUITableViewCell,再重写layoutSubviews方法

    -(void)layoutSubviews
{

    [super layoutSubviews];

    // 这里设定希望的合适的frame
    [self.imageView setFrame:CGRectMake(10, 10,29, 29)];

    self.imageView.contentMode = UIViewContentModeScaleAspectFit;

}

一般来讲这样就可以了,但是有的时候出于各种原因(比如是维护老项目),不能继承UITableViewCell,上面的方法就不能用了。这时可以用另外一个方法。

在TableView的代理方法- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
中这样写

//  设置frameSize
/*
... do something ...
*/
CGSize itemSize = CGSizeMake(20, 20);
UIGraphicsBeginImageContextWithOptions(itemSize, NO, UIScreen.mainScreen.scale);
CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
[cell.imageView.image drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); 
return Cell;

以上就OK了,因为涉及重绘,所以会稍微多消耗点资源,尽量少用,不谈可能会造成轻微卡顿。