iOS 实现获取远程的图片并显示

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33351713/article/details/83151933

好久没写了,新实现了远程获取图片,磕磕绊绊还是完成了,现在分享一下,希望能帮到大家!我的需求⬆️从一个接口获取到图片的名称并将其分别拼接到路径上,并取出来。

(1)首先你要定义一个函数,用来获取URL上的图片的路径,并进行一些处理

.h文件

#import <Foundation/Foundation.h>

//请求成功的Block

typedef void(^HttpRequestSuccessBlock)(NSArray *responseData);

//请求成功的Block

typedef void(^HtmlRequestSuccessBlock)();

//请求失败的Block

typedef void(^HttpRequestFailedBlock)(NSError *error, NSString *msg);

@interface GetPictureTool : NSObject

扫描二维码关注公众号,回复: 3907583 查看本文章

+(void)GetPictureWithScenicId:(NSString*) scenicid success:(HttpRequestSuccessBlock)success failure:(HttpRequestFailedBlock)failure;

@end

.m文件

#import "GetPictureTool.h"

#import "NetworkManager.h"//框架,自己引用

#import "GlobalHeader.h"

#import <ImageIO/ImageIO.h>

@implementation GetPictureTool

+(void)GetPictureWithScenicId:(NSString*) scenicid success:(HttpRequestSuccessBlock)success failure:(HttpRequestFailedBlock)failure{

     NSDictionary * postParameterDic = @{@"ScenicId" : scenicid};

   //static NSArray * images;

    NSMutableArray *images=[[NSMutableArray alloc]init];

    static NSArray *imagesPath;

    NSString *urlStr=@"http://.....";//获取图片名称的接口

    NSString *imageUrl=@"http://.......";//图片的下载地址

    

   [[NetworkManager sharedManager]getWithURLString:urlStr parameterDictionary:postParameterDic successHandler:^(NSURLSessionDataTask *operation, id responseObject) {

        if (responseObject) {

            NSError *jsonError;

            id jsonData = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:&jsonError];

            

            NSString *result=[jsonData objectForKey:@"picpath"];

            if (result!=nil) {

                NSString *cccc = [result substringToIndex:[result length] - 1];

                imagesPath= [cccc componentsSeparatedByString:@";"];

                NSLog(@"array:%@",imagesPath);

                for(NSDictionary *d in imagesPath){

                    NSString * imageURL =[NSString new];

                   imageURL= [NSString stringWithFormat:@"%@%@", imageUrl, d ];

                    [images addObject:imageURL];

                }

                if (success) {

                    success(images);

                }

            }else {     

            //没有数据

            }

        }else {

        //   获取服务器数据失败

        }

        

    } failedHandler:^(NSURLSessionDataTask *operation, NSError *error) {

        

    } expireIn:0];

}

@end

(2)调用这个函数

[GetPictureTool GetPictureWithScenicId:scenicid success:^(NSArray *responseData){   

        if (responseData) {

            for (NSString *temp in responseData) {              

                UIImage *im=[UIImage new];

                im=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString: temp]]];

                [ImageArray addObject:im];

            }

            carousel.images=[ImageArray copy];

        NSLog(@"zaizheli");

        }

    }failure:^(NSError *error, NSString *msg) {        

    }];

解释几点:

a.for循环将几个路径都取出来,然后给UIImage对象,在使用dataWithContentsOfURL时,记得将字符串转换成URL

b.carousel.images=[ImageArray copy];这里是将一个NSMutableArray复制给NSArray,所以用copy,不可以直接赋值

猜你喜欢

转载自blog.csdn.net/qq_33351713/article/details/83151933
今日推荐