Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIImageView+;调整图像大小并返回图像高度以调整单元格高度的成功块_Ios_Iphone_Image_Uiimageview_Afnetworking 2 - Fatal编程技术网

Ios UIImageView+;调整图像大小并返回图像高度以调整单元格高度的成功块

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

我正在使用UIImageView+AFNetworking获取图像URL,并使用该图像调整大小(如果大小较大)。如果尺寸很大,我需要返回图像在

- (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也会触发大量下载-如果用户向下滚动列表会发生什么情况?你需要重新考虑一下设计。有没有什么方法可以从中心调整裁剪图像的大小?在这种情况下,这可以解决我的问题。当然-但这是一个不同的问题,应该单独问(并且已经回答了很多次,例如这里:)我注意到你没有接受(勾选图标)你所问问题的任何答案。如果你觉得他们没有充分回答这个问题,一定要发表评论。