无法从Web动态设置图像到imageview

时间:2016-02-19 04:41:25

标签: ios objective-c uiimageview uiimage nsdata

我使用以下代码从网上下载图片并将其添加到数组中。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    UIImage* myImage = [UIImage imageWithData:
                        [NSData dataWithContentsOfURL:
                         [NSURL URLWithString: @"http://tcpm.mrlazyinc.com/files/users/themafia/te/beauty/02.jpg"]]];

    recipePhotos = [[NSMutableArray alloc] initWithObjects:myImage, @"2.png", @"3.png", @"4.png", @"5.png", @"6.png", @"6.png", @"8.png", @"9.png", @"10.png", nil];
});

我使用以下代码将图像设置为ui

UIImageView *recipeImageView = (UIImageView *)[cell viewWithTag:100];
recipeImageView.image = [UIImage imageNamed:[recipePhotos objectAtIndex:indexPath.row]];

在运行期间,不会显示从Web下载的图像。我有什么遗失的吗?

3 个答案:

答案 0 :(得分:3)

你正在做的是使用[UIImage imageNamed:] 但这将访问数组recipePhotos的对象,并将返回每个对象中的字符串。所以你没有这些名称的图像。 由于存储在数组中的对象是图像,因此应该尝试使用

所以尝试做

recipeImageView.image = [recipePhotos objectAtIndex:indexPath.row]

recipeImageView.image = [UIImage imageWithData:[recipePhotos objectAtIndex:indexPath.row]

答案 1 :(得分:1)

在数组recipePhotos中,只有第一个索引包含正确的UIImage,因为它包含"http://tcpm.mrlazyinc.com/files/users/themafia/te/beauty/02.jpg"myImage)的完整路径,而只包含没有http://tcpm.mrlazyinc.com/files/users/themafia/te/beauty/的文件路径的字符串{ {1}}

recipePhotos = [[NSMutableArray alloc] initWithObjects:myImage, @"2.png", @"3.png", @"4.png", @"5.png", @"6.png", @"6.png", @"8.png", @"9.png", @"10.png", nil];

});

尝试NSLog数组recipePhotos

答案 2 :(得分:1)

使用SDWebImage类从web

动态地将图像设置为imageview

将以下文件导入头文件。

#import "UIImageView+WebCache.h"

导入文件后尝试以下代码。

[self.imgLogo sd_setImageWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",[self.dictTemp valueForKey:@"camp_image"]]] placeholderImage:[UIImage imageNamed:@"placeholder.jpg"]];

从以下链接下载库: -

https://github.com/rs/SDWebImage