iOS 開發之 為UIButton添加類別方法載入網狀圖片

來源:互聯網
上載者:User

標籤:http   io   os   ar   使用   for   sp   strong   資料   

iOS 開發之 為UIButton添加類別方法載入網狀圖片

 

使用GCD線程隊列實現

 

工程如下:

 

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

 

:

 

 

iOS 開發之 為UIButton添加類別方法載入網狀圖片

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.