Ios UIImageView+;调整图像大小并返回图像高度以调整单元格高度的成功块
我正在使用UIImageView+AFNetworking获取图像URL,并使用该图像调整大小(如果大小较大)。如果尺寸很大,我需要返回图像在Ios UIImageView+;调整图像大小并返回图像高度以调整单元格高度的成功块,ios,iphone,image,uiimageview,afnetworking-2,Ios,Iphone,Image,Uiimageview,Afnetworking 2,我正在使用UIImageView+AFNetworking获取图像URL,并使用该图像调整大小(如果大小较大)。如果尺寸很大,我需要返回图像在 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 问题是在执行块和返回调整大小之前返回高度。我想等到我在成功区执行的过程结束。完成,然后返回方法中的图像大小 - (CGFloat)tableView:(UITabl
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
问题是在执行块和返回调整大小之前返回高度。我想等到我在成功区执行的过程结束。完成,然后返回方法中的图像大小
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UIImageView *ivImage = [[UIImageView alloc]init];
__block BOOL isResized = NO;
[ivImage setImageWithURLRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[[marrMainNewsFeed objectAtIndex:indexPath.row] valueForKey:@"image"]]] placeholderImage:[UIImage imageNamed:@"placeholder.png"] success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) {
// cell.ivImage.image = image;
NSLog(@"image size %f",image.size.width);
if (ivImage.image.size.width >= SCREEN_WIDTH - 10) {
// I resize my image by calling following method
ivImage.image = [CommonFunctions imageWithImage:ivImage.image scaledToMaxWidth:SCREEN_WIDTH maxHeight:0];
ivImage.frame = CGRectMake(ivImage.frame.origin.x, ivImage.frame.origin.y, SCREEN_WIDTH - 4, ivImage.image.size.height);
isResized = YES;
ivImage.image = image;
// height = ivImage.image.size.height;
} else {
ivImage.image = image;
ivImage.contentMode = UIViewContentModeCenter;
// height = ivImage.image.size.height;
}
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
NSLog(@"Request failed with error: %@", error);
}];
NSLog(@"new Height %@ for index %@",isResized?@"YES":@"NO",indexPath);
return height + 350;
}
首先触发返回,然后调整图像的大小并给出图像的高度。我想等待调整大小完成,然后返回单元格的高度
希望我能取得丰硕的成果这绝对是错误的 URL请求可能需要很长时间——如果你真的等到图像被提取并调整大小,那么你可能会阻塞你的UI太长时间,以至于你会冒用户认为你的应用程序崩溃的风险,并强制退出它。你也很有可能通过苹果的测试 如果出于布局目的,您需要知道图像有多大,那么您仅有的选项是: 1) 在显示此视图之前,请执行所有抓取操作 或 2) 根据您的应用程序和服务器体系结构,在获取所有图像之前,请预取有关布局的信息
另一种更简单的方法是在获取图像后重新播放。我将获得最大尺寸为600x600的图像。如果大于这个值,我必须将其调整为320。在显示图像之前,是否有其他方法调整图像大小。基本上我需要根据宽度调整大小。在显示之前下载所有图像不是一个好主意。因为它会占用很多内存。我猜。你可以用CoreGraphics调整大小,但这解决不了任何问题。是的,在显示之前下载所有图像会占用大量内存,但您的HeightForRowatineXpath也会触发大量下载-如果用户向下滚动列表会发生什么情况?你需要重新考虑一下设计。有没有什么方法可以从中心调整裁剪图像的大小?在这种情况下,这可以解决我的问题。当然-但这是一个不同的问题,应该单独问(并且已经回答了很多次,例如这里:)我注意到你没有接受(勾选图标)你所问问题的任何答案。如果你觉得他们没有充分回答这个问题,一定要发表评论。