Ios 如何在UITableViewCell中调整图像大小?

Ios 如何在UITableViewCell中调整图像大小?,ios,uitableview,Ios,Uitableview,我正在尝试制作一个Xcode应用程序,它有一个从JSON文件加载数据的列表。它基本上有一个标题、副标题和缩略图。当应用程序加载时,图像与单元格一样大。我想将图像调整到设定的大小,或者在单元格之间留出一些额外的空间。这是我目前的代码: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdenti

我正在尝试制作一个Xcode应用程序,它有一个从JSON文件加载数据的列表。它基本上有一个标题、副标题和缩略图。当应用程序加载时,图像与单元格一样大。我想将图像调整到设定的大小,或者在单元格之间留出一些额外的空间。这是我目前的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

static NSString *CellIdentifier = @"TableCell";


UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];


NSDictionary *tempDictionary= [self.googlePlacesArrayFromAFNetworking objectAtIndex:indexPath.row];

NSURL *url = [NSURL URLWithString:[tempDictionary objectForKey:@"icon"]];
NSData *data = [NSData dataWithContentsOfURL:url];
cell.imageView.image = [UIImage imageWithData:data];
CALayer * l = [cell.imageView layer];
[l setCornerRadius:13];
[l setBorderWidth:0.5];
[l setBorderColor:[[UIColor lightGrayColor] CGColor]];
cell.imageView.layer.masksToBounds = YES;
...}
谢谢你的帮助

更新:我发现:

 UIImage *thumbnail = [UIImage imageWithData: [NSData dataWithContentsOfURL :url]];

CGSize itemSize = CGSizeMake(30, 30);
UIGraphicsBeginImageContext(itemSize);
CGRect imageRect = CGRectMake(30.0, 30.0, itemSize.width, itemSize.height);
[thumbnail drawInRect:imageRect];
cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
图像会调整大小,但只是空白。

尝试以下操作:

cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
或:

或者,您可以缩放从url获取的图像

CGFloat scale = 10.0f;    // adjust this number
UIImage *image = [UIImage imageWithData:
                                  [NSData dataWithContentsOfURL:url]
                                  scale:scale];
cell.imageView.image = image;

我在重新调整图像大小时也面临同样的问题。在互联网上搜索后,我发现了一个有用的方法:

+(UIImage*)imageWithImage:(UIImage*)image scaledToSize:(CGSize)newSize
{
UIGraphicsBeginImageContext( newSize );
[image drawInRect:CGRectMake(0,0,newSize.width,newSize.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
这将返回图像大小。 在我的例子中,我创建了一个Helper类,并在Helper.h中将此方法声明为类方法,以便在UITableView中调用它。我实现了这个方法

在cellForRowAtIndexPath方法中:

cell.imageView.image = [Helper imageWithImage:***Your Image here*** scaledToSize:CGSizeMake(ImageWidth,ImageHeight)];
不要忘记在TableView类中导入Helper.h。 您也可以按照自己的方式使用这个类。
希望它能起作用。

不幸的是,这没有起到任何作用。图像大小仍然相同。这可能是因为单元格不是自定义单元格。在“样式”下的下拉选项中,我选择了“Subtitle”。它仍在生成和运行,但它给我一个警告,“image”是一个未使用的变量。@请查看编辑。您可以在imageView中使用此图像。为什么不制作一个自定义单元格,并将图像视图上的约束设置为您想要的大小?我已经尝试过了,但我不知道到底发生了什么。这很奇怪。我拖入的标签与从JSON加载的标题和字幕是分开的。我不知道你所说的“我拖入的标签与从JSON加载的标题和字幕是分开的”是什么意思。如何设置标签上的文本?实际上我发现了这个:UIImage*缩略图=[UIImage imageWithData:[NSData dataWithContentsOfURL:url]];cgsizeitemsize=CGSizeMake(30,30);UIGraphicsBeginImageContext(itemSize);CGRect imageRect=CGRectMake(30.0,30.0,itemSize.width,itemSize.height);[缩略图drawInRect:imageRect];cell.imageView.image=UIGraphicsGetImageFromCurrentImageContext();UIGraphicsSendImageContext();
cell.imageView.image = [Helper imageWithImage:***Your Image here*** scaledToSize:CGSizeMake(ImageWidth,ImageHeight)];