我正在使用SDWebImage从youtube JSON Web服务下载缩略图,以便将它们设置在表格视图单元格中。问题是下载图像是120x90,对我的需求来说太大了,因为我想把它放在75x75的UIImageView中。虽然图像缓存在占位符中,但它们看起来是正确的,但是一旦缓存完成,它们将以120x90比例大小查看。我尝试了setContentMode:UIViewContentModeScaleToFill,但它不起作用,所以我不知道如何解决这个问题。
NSString *path= [thumbnail valueForKey:@"sqDefault"];
[cell.imageView setImageWithURL:[NSURL URLWithString:path] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
[cell.imageView setContentMode:UIViewContentModeScaleToFill];
CALayer * l = [cell.imageView layer];
[l setMasksToBounds:YES];
[l setCornerRadius:5.0];
非常感谢
编辑:
我在自定义单元格扩展类中设置了内容模式:
newsCell.m
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[self.Image setContentMode:UIViewContentModeScaleToFill];
}
return self;
}
这是细胞创建代码:
multimedia.m
newsCell *cell = [self.tableView
dequeueReusableCellWithIdentifier:@"news"];
if (cell == nil) {
cell = [[newsCell alloc] initWithStyle:UITableViewCellSelectionStyleNone reuseIdentifier:@"news"];
}
问题是if if(cell == nil)从未被调用,因为第一个语句正在创建单元格,因此未调用initWithStyle并且未设置内容模式,但如果我删除第一个语句,则不会创建单元格。我不知道如何管理它。
由于
答案 0 :(得分:4)
尝试这两个选项,看看哪个更适合您的需求:
UIViewContentModeScaleAspectFit
UIViewContentModeAspectFill
如果这些不起作用,我猜测是因为UITableViewCell在UIImageView上设置了contentMode - 在这种情况下,您应该创建一个UITableViewCell的子类,其中包含一个具有正确contentMode集的UIImageView。然后,您可以在UITableView中使用自定义UITableViewCell子类。
答案 1 :(得分:1)
在自定义单元格类
中设置表格图像视图的自定义大小 - (void)layoutSubviews {
[super layoutSubviews];
self.imageView.frame = CGRectMake(5,5,40,32.5);
float limgW = self.imageView.image.size.width;
if(limgW > 0) {
self.textLabel.frame = CGRectMake(55,self.textLabel.frame.origin.y,self.textLabel.frame.size.width,self.textLabel.frame.size.height);
self.detailTextLabel.frame = CGRectMake(55,self.detailTextLabel.frame.origin.y,self.detailTextLabel.frame.size.width,self.detailTextLabel.frame.size.height);
}
}
有关详细信息please refer this link