• iOS 开发之 为UIButton添加类别方法加载网络图片


    iOS 开发之 为UIButton添加类别方法加载网络图片

    使用GCD线程队列实现

    工程如下:

    屏幕快照 2014-10-29 下午6.43.50.png

    UIButton+WebCache.h

    #import <UIKit/UIKit.h>

    // 为Button添加类别方法

    @interface UIButton (WebCache)

    - (void)xr_setButtonImageWithUrl:(NSString *)urlStr;

    @end

    UIButton+WebCache.m

    #import "UIButton+WebCache.h"

    @implementation UIButton (WebCache)

    - (void)xr_setButtonImageWithUrl:(NSString *)urlStr {

        

        NSURL * url = [NSURL URLWithString:urlStr];

        

        // 根据图片的url下载图片数据

        

        dispatch_queue_t xrQueue = dispatch_queue_create("loadImage", NULL); // 创建GCD线程队列

        

        dispatch_async(xrQueue, ^{

           

            // 异步下载图片

            

            UIImage * img = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

            

            // 主线程刷新UI

            dispatch_async(dispatch_get_main_queue(), ^{

                

                [self setImage:img forState:UIControlStateNormal];

            });

            

        });

    }

    @end

    #import <UIKit/UIKit.h>

    @interface XRViewController : UIViewController

    @property (weak, nonatomic) IBOutlet UIButton *ImgBtn;

    @end

    #import "XRViewController.h"

    #import "UIButton+WebCache.h"

    @interface XRViewController ()

    @end

    @implementation XRViewController

    - (void)viewDidLoad

    {

        [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.

    }

    - (IBAction)loadImg:(id)sender {

        

        [self loadImage];

        

    }

    - (void)loadImage {

        [_ImgBtn xr_setButtonImageWithUrl:@"http://img3.3lian.com/2014/c2/66/d/56.jpg"];

    }

    - (void)didReceiveMemoryWarning

    {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }

    @end

    效果图:

    屏幕快照 2014-10-29 下午6.53.42.png

  • 相关阅读:
    python参考手册--第3章类型和对象
    python参考手册--第2章词汇和语法约定
    Kafka 分布式环境搭建
    常用sql语句
    ValueError: Attempted relative import in non-package
    mysql查询缓存
    secureCRT配色
    mysql deadlock处理
    How to Cope with Deadlocks
    ajax同步
  • 原文地址:https://www.cnblogs.com/hanzhuzi/p/4060297.html
Copyright © 2020-2023  润新知