问题
我正在开发一个应用程序,我从一个网站上传的JSON文件中下载数据。所有下载的内容都显示正确...但我有这个大小为54x54的UIImageView,每当我尝试从JSON文件下载图像时,它都会显示其原始大小而不是图像视图的大小。
这对视网膜设备来说是一个问题,因为图像必须与图像视图的尺寸相同。
如何在正确的测量值下调整图像大小?
http://i.stack.imgur.com/qOQz5.png
这就是我所拥有的:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
UILabel *label;
label = (UILabel *)[cell viewWithTag:1];
label.text = [arrayTitle objectAtIndex:indexPath.row];
label.frame = CGRectMake(70, 8, 209, 21);
label = (UILabel *)[cell viewWithTag:2];
label.text = [arraySubtitle objectAtIndex:indexPath.row];
label.frame = CGRectMake(70, 29, 209, 33);
label.numberOfLines = 2;
UIImageView *imgView = (UIImageView *)[cell viewWithTag:0];
imgView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", [arrayImage objectAtIndex:indexPath.row]]]]];
imgView.frame = CGRectMake(8, 8, 54, 54);
cell.imageView.image = imgView.image;
return cell;
}
答案 0 :(得分:2)
<强>解强>
我创建了一个UITableViewCell类并实现了我的标签和图像视图的所有属性:
- (void)awakeFromNib {
imageView.frame = CGRectMake(8, 8, 54, 54);
title.frame = CGRectMake(79, 14, 200, 21);
subtitle.frame = CGRectMake(79, 31, 200, 33);
date.frame = CGRectMake((self.window.frame.size.width - 140), 0, 100, 21);
}
然后我在TableViewController中调用它:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
HomeTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
cell.title.text = [arrayTitle objectAtIndex:indexPath.row];
cell.subtitle.text = [arraySubtitle objectAtIndex:indexPath.row];
cell.date.text = [arrayDate objectAtIndex:indexPath.row];
cell.imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@", [arrayImage objectAtIndex:indexPath.row]]]]];
return cell;
}
答案 1 :(得分:1)
你可以使用它或尝试减小帧的大小。
imageView.contentMode = UIViewContentModeScaleAspectFill;
or
imageView.contentMode = UIViewContentModeScaleAspectFit;
答案 2 :(得分:0)
图像尺寸很完美,但缺少的是少数属性 - (以下两个选项中的任何一个选项都可以解决您的问题。)
内容模式:现在, AspectFill 。它应该是 根据您的要求, ScaleToFill 或 AspectFit 。
[imageView setContentMode: UIViewContentModeScaleToFill];
要么
[imageView setContentMode: UIViewContentModeScaleAspectFill];
请勿忘记启用UIImageView
的 ClipSubviews 。
[imageView setClipsToBounds:YES];