• swift 异步加载图片(第三方框架ImageLoader)


    import UIKit
    
    @UIApplicationMain
    class AppDelegate: UIResponder, UIApplicationDelegate {
    
        var window: UIWindow?
    
    
        func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
            self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
            // Override point for customization after application launch.
            self.window!.backgroundColor = UIColor.whiteColor()
            
            self.window!.rootViewController = RootViewController();
            
            self.window!.makeKeyAndVisible()
            return true
        }
    }
    
    import UIKit
    
    class RootViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            
            let imageView = UIImageView.init(frame: UIScreen.mainScreen().bounds);
            imageView.backgroundColor = UIColor.greenColor()
            self.view.addSubview(imageView)
            
            let path:String = "http://pic2.ooopic.com/11/86/60/84bOOOPIC13.jpg"
            //异步加载图片(第三方框架)
            ImageLoader.sharedLoader.imageForUrl(path) { (image, url) -> () in
                imageView.image = image
            }
        }
    }
    
    import UIKit
    import Foundation
    
    
    class ImageLoader {
        
        let cache = NSCache()
    
        class var sharedLoader : ImageLoader {
        struct Static {
            static let instance : ImageLoader = ImageLoader()
            }
            return Static.instance
        }
        
    	func imageForUrl(urlString: String, completionHandler:(image: UIImage?, url: String) -> ()) {
    		dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), {()in
    			let data: NSData? = self.cache.objectForKey(urlString) as? NSData
    			
    			if let goodData = data {
    				let image = UIImage(data: goodData)
    				dispatch_async(dispatch_get_main_queue(), {() in
    					completionHandler(image: image, url: urlString)
    				})
    				return
    			}
    			
    			let downloadTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: urlString)!, completionHandler: {(data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
    				if (error != nil) {
    					completionHandler(image: nil, url: urlString)
    					return
    				}
    				
    				if let data = data {
    					let image = UIImage(data: data)
    					self.cache.setObject(data, forKey: urlString)
    					dispatch_async(dispatch_get_main_queue(), {() in
    						completionHandler(image: image, url: urlString)
    					})
    					return
    				}
    				
    			})
    			downloadTask.resume()
    		})
    		
    	}
    }
    
  • 相关阅读:
    整数反转
    两数之和
    设计模式-备忘录模式
    设计模式-迭代器模式
    设计模式-中介者模式
    设计模式-观察者模式
    C# OpenFileDialog和SaveFileDialog的常见用法
    SQL数据库表结构的修改(sql2005)
    C# 时间格式处理
    C# 集合类(四)
  • 原文地址:https://www.cnblogs.com/lantu1989/p/5160310.html
Copyright © 2020-2023  润新知