1. 程式人生 > >iOS 實現獲取遠端的圖片並顯示

iOS 實現獲取遠端的圖片並顯示

好久沒寫了,新實現了遠端獲取圖片,磕磕絆絆還是完成了,現在分享一下,希望能幫到大家!我的需求⬆️從一個介面獲取到圖片的名稱並將其分別拼接到路徑上,並取出來。

(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 *[email protected]"http://.....";//獲取圖片名稱的介面

    NSString *[email protected]"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,不可以直接賦值