加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用Alamofire在swift中加载图像

发布时间:2020-12-14 05:54:00 所属栏目:百科 来源:网络整理
导读:我有一个集合视图控制器,它通过URL加载图像异步。 (类似Instegram的东西) 我正在寻找实现装载图像部分的最佳方法。 请告诉我你觉得怎么样 第一种方式 – 没有任何外部图书馆: let downloadQueue = dispatch_queue_create("com.pro.asyncImages",nil) dispa
我有一个集合视图控制器,它通过URL加载图像异步。
(类似Instegram的东西)
我正在寻找实现装载图像部分的最佳方法。
请告诉我你觉得怎么样

第一种方式 – 没有任何外部图书馆:

let downloadQueue = dispatch_queue_create("com.pro.asyncImages",nil)
    dispatch_async(downloadQueue){

        var data = NSData(contentsOfURL: NSURL(string: pictureUrl!)!)

        var image: UIImage?
        if (data != nil){
            image = UIImage(data: data!)
        }
        dispatch_async(dispatch_get_main_queue()){
            uiImageView.image = image
        }
    }

第二种方法 – 使用Alamofire(请求属于Alamofire)

if let  mediaUrl = info.mediaUrl {
        request(.GET,mediaUrl).response(){
            (_,_,data,_) in
            let image = UIImage(data: data! as NSData)
            imageView.image = image
        }
    }

最后,我读到AFNetworking,正在将url异步加载到urlImage中做得很好,这是我想要做的。

AFNetworking对于这项任务更好吗? (然后Alamofire)
如果没有,我不明白如何添加AFNetworking到我的快速项目,除了添加#import“AFNetworking.h”我需要添加哪些文件?

请说明哪种方法是最好的,我的需求是表现,指责,缓存。
视图采集控制器像Instegram一样运行,并且正在加载图像,同时向下滚动。
我希望我对我所需要的很清楚,
谢谢

作者在Alamofire README.md中提到:

When should I use AFNetworking?

  • UIKit extensions,such as asynchronously loading images to UIImageView

所以回答你的问题:

So is AFNetworking is better for this task?

是!

但是,如果仍然要使用香草Alamofire项目,可以通过以下方式获取图像:

Alamofire.request(.GET,"https://robohash.org/123.png").response { (request,response,error) in
        self.myImageView.image = UIImage(data: data,scale:1)
    }

附:

但是,如果您只想加载映像(当然异步) – 您根本不需要使用Alamofire或AFNetworking。
只需在代码中添加这个小扩展名:

extension UIImageView {
    public func imageFromUrl(urlString: String) {
        if let url = NSURL(string: urlString) {
            let request = NSURLRequest(URL: url)
            NSURLConnection.sendAsynchronousRequest(request,queue: NSOperationQueue.mainQueue()) {
                (response: NSURLResponse!,data: NSData!,error: NSError!) -> Void in
                self.image = UIImage(data: data)
            }
        }
    }
}

并使用它:

myImageView.imageFromUrl("https://robohash.org/123.png")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读