| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- //
- // UIImageView.swift
- // Gasteizko Margolariak
- //
- // Created by Yuji Hato on 11/3/15.
- // Copyright © 2015 Yuji Hato. All rights reserved.
- //
- import UIKit
- extension UIImageView {
-
- func setRandomDownloadImage(width: Int, height: Int) {
- if self.image != nil {
- self.alpha = 1
- return
- }
- self.alpha = 0
- let url = NSURL(string: "https://ssl.webpack.de/lorempixel.com/\(width)/\(height)/")!
- let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
- configuration.timeoutIntervalForRequest = 15
- configuration.timeoutIntervalForResource = 15
- configuration.requestCachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
- let session = NSURLSession(configuration: configuration)
- let task = session.dataTaskWithURL(url, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
- if error != nil {
- return
- }
-
- if let response = response as? NSHTTPURLResponse {
- if response.statusCode / 100 != 2 {
- return
- }
- if let data = data, let image = UIImage(data: data) {
- dispatch_async(dispatch_get_main_queue(), { () -> Void in
- self.image = image
- UIView.animateWithDuration(0.3, animations: { () -> Void in
- self.alpha = 1
- }) { (finished: Bool) -> Void in
- }
- })
- }
- }
- })
- task.resume()
- }
-
- func clipParallaxEffect(baseImage: UIImage?, screenSize: CGSize, displayHeight: CGFloat) {
- if let baseImage = baseImage {
- if displayHeight < 0 {
- return
- }
- let aspect: CGFloat = screenSize.width / screenSize.height
- let imageSize = baseImage.size
- let imageScale: CGFloat = imageSize.height / screenSize.height
-
- let cropWidth: CGFloat = floor(aspect < 1.0 ? imageSize.width * aspect : imageSize.width)
- let cropHeight: CGFloat = floor(displayHeight * imageScale)
-
- let left: CGFloat = (imageSize.width - cropWidth) / 2
- let top: CGFloat = (imageSize.height - cropHeight) / 2
-
- let trimRect : CGRect = CGRectMake(left, top, cropWidth, cropHeight)
- self.image = baseImage.trim(trimRect: trimRect)
- self.frame = CGRectMake(0, 0, screenSize.width, displayHeight)
- }
- }
- }
|