zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    234. Palindrome Linked List(判断链表是否回文)
    141. Linked List Cycle(判断链表是否有环)
    第二届“中国高校计算机大赛-大数据挑战赛” 20名
    Spark集群 Python Package管理
    Android中单选框RadioButton的基本用法
    【Android】进程间通信IPC——Binder
    Spring Boot 集成 JWT 实现单点登录授权
    pythonGUI编程——Qt库(1)
    Android获取SD卡路径/内存的几种方法
    Android主题更换换肤
  • 原文地址:https://www.cnblogs.com/hanzhuzi/p/4060297.html
Copyright © 2011-2022 走看看