zoukankan      html  css  js  c++  java
  • AFNetworking 和 SDWebImage

    AFNetworking                                                                  

    1. AFNetworking对IOS支持情况

    AFNetworking VersionMinimum iOS TargetMinimum OS X TargetNotes
    2.x iOS 6 OS X 10.8 Xcode 5 is required. NSURLSession subspec requires iOS 7 or OS X 10.9.
    1.x iOS 5 Mac OS X 10.7  
    0.10.x iOS 4 Mac OS X 10.6  

    2. 使用方法

    使用CocoaPods进行安装使用,Podfile如下:

    platform :ios, '7.0'
    pod "AFNetworking", "~> 2.0"

    3. 基本使用方法

    1. 获取当前设备的网络状态

    + (void)netWorkStatus
    {
       /**
        AFNetworkReachabilityStatusUnknown          = -1,  // 未知
        AFNetworkReachabilityStatusNotReachable     = 0,   // 无连接
        AFNetworkReachabilityStatusReachableViaWWAN = 1,   // 3G 花钱
        AFNetworkReachabilityStatusReachableViaWiFi = 2,   // WiFi
        */
       // 如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring
       [[AFNetworkReachabilityManager sharedManager] startMonitoring];
       
       // 检测网络连接的单例,网络变化时的回调方法
       [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
           NSLog(@"%ld", status);
       }];
    }

    2. 获取JSON格式数据

    + (void)JSONDataWithUrl:(NSString *)url success:(void (^)(id json))success fail:(void (^)())fail;
    {
       AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
       
       NSDictionary *dict = @{@"format": @"json"};
       // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
       [manager GET:url parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
           if (success) {
               success(responseObject);
           }
       } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
           NSLog(@"%@", error);
           if (fail) {
               fail();
           }
       }];
    }

    3. 获取XML数据

    1. + (void)XMLDataWithUrl:(NSString *)urlStr success:(void (^)(id xml))success fail:(void (^)())fail
      {
         AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
         
         // 返回的数据格式是XML
         manager.responseSerializer = [AFXMLParserResponseSerializer serializer];
         
         NSDictionary *dict = @{@"format": @"xml"};
         
         // 网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情
         [manager GET:urlStr parameters:dict success:^(AFHTTPRequestOperation *operation, id responseObject) {
             if (success) {
                 success(responseObject);
             }
             
         } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
             NSLog(@"%@", error);
             if (fail) {
                 fail();
             }
         }];
      }

    4. POST方式提交数据(其实也能够获取数据)

    + (void)postJSONWithUrl:(NSString *)urlStr parameters:(id)parameters success:(void (^)(id responseObject))success fail:(void (^)())fail
    {
       AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
       // 设置请求格式
       manager.requestSerializer = [AFJSONRequestSerializer serializer];
       // 设置返回格式
       manager.responseSerializer = [AFHTTPResponseSerializer serializer];
       [manager POST:urlStr parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
    //        NSString *result = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
           if (success) {
               success(responseObject);
           }
       } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
           NSLog(@"%@", error);
           if (fail) {
               fail();
           }
       }];
       
    }

    5. 下载图片

       NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.scott-sherwood.com/wp-content/uploads/2013/01/scene.png"]];
       AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request
                                                                                 imageProcessingBlock:nil
                                                                                              success:^(NSURLRequest *request, NSHTTPURLResponse*response, UIImage *image) {
           self.backgroundImageView.image = image;
       } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error) {
           NSLog(@"Error %@",error);
       }];
       
       [operation start];

    SDWebImage使用,图片加载和缓存

    这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。
    使用方法.

    自动缓存时候缓存图片名字是以MD5进行加密的后的名字进行命名.(因为加密那堆字串是唯一的)

    1.   ImageView显示图片时使用方法

    UITableView使用UIImageView+WebCache类(基本应用,UIImageView的一个category)

    前提#import导入UIImageView+WebCache.h文件,然后在tableview的cellForRowAtIndexPath:方法下:

     [imageView setImageWithURL:[NSURL URLWithString:@"http://www.domain.com/path/to/image.jpg"] placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    异步的方式,并且能够自动的缓存。

    2. 使用SDWebImageManager类:可以进行一些异步加载的工作

    SDWebImageManager *manager = [SDWebImageManager sharedManager];
    UIImage *cachedImage = [manager imageWithURL:url]; // 将需要缓存的图片加载进来
    if (cachedImage) {
         // 如果Cache命中,则直接利用缓存的图片进行有关操作
         // Use the cached image immediatly
    } else {
         // 如果Cache没有命中,则去下载指定网络位置的图片,并且给出一个委托方法
         // Start an async download
        [manager downloadWithURL:url delegate:self];
    }

    然后需要实现委托

    1. // 当下载完成后,调用回调方法,使下载的图片显示
      - (void)webImageManager:(SDWebImageManager *)imageManager didFinishWithImage:(UIImage *)image {
         // Do something with the downloaded image
      }

    3. 独立异步图像缓存

    独立的异步图像缓存

    SDImageCache类提供一个创建空缓存的实例,并用方法imageForKey:来寻找当前缓存。

     

    UIImage *myCachedImage = [[SDImageCache sharedImageCache] imageFromKey:myCacheKey];
    //存储一个图像到缓存是使用方法storeImage: forKey:
    [[SDImageCache sharedImageCache] storeImage:myImage forKey:myCacheKey];

    默认情况下,图像将被存储在内存缓存和磁盘缓存中。如果仅仅是想内存缓存中,要使用storeImage:forKey:toDisk:方法的第三个参数带一负值来替代。

  • 相关阅读:
    小学四则运算编程实践
    熟悉编程语言
    俄罗斯方块游戏(修改为无敌版)
    2020-2021-1 20201212《信息安全专业导论》第八周学习总结
    如何学好编程
    python day 4 turtle
    python day 3
    20191206《信息安全专业导论》第五周学习总结
    20191206《信息安全专业导论》第四周学习总结
    20191206《信息安全专业导论》第三周学习总结
  • 原文地址:https://www.cnblogs.com/zhhwgis/p/4814412.html
Copyright © 2011-2022 走看看