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

本文介绍如何在iOS应用中实现从远程接口获取图片名称,拼接URL并下载显示。通过自定义`GetPictureTool`类,利用网络框架进行HTTP请求,解析JSON数据获取图片路径,然后使用`UIImage`加载图片数据。最后展示如何在循环中处理多个图片并显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

(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

+(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,不可以直接赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值