2016-04-29 2 views
0

В настоящее время я пытаюсь создать прогрессивный загрузчик JPG. Когда большое изображение передается в мое NSURLConnection, кажется, что вырезали половину изображения.Прогрессивная загрузка JPG с NSURLConnection

Вот мой didReceiveData метод и изображение данных присваивается:

func connection(connection: NSURLConnection!, didReceiveData data: NSData!){ 
    if let img: UIImage = UIImage(data: data){ 
     imageView.image = img 
    } 
    print("didReceiveData") 
} 

кажется, пропустить последний кусок данных, чтобы завершить образ. Пример изображения:

Greyed image

Это изображение передается connectionDidFinishLoading как завершено, но явно не так. У кого-нибудь есть идеи, почему это произойдет?

ответ

0

Делегат optional public func connection(connection: NSURLConnection, didReceiveData data: NSData) предположительно должен быть обратным вызовом для загрузки данных постепенно. Каждый раз, когда он вызывается, вы получаете новые данные. Таким образом, если вы попытаетесь установить изображение с полученными данными, это не будет завершенное изображение. Вместо этого вы должны попробовать это

@IBOutlet weak var imageView: UIImageView! 
    var receivedData = NSMutableData() 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     // Do any additional setup after loading the view, typically from a nib. 
     let imageURL = "https://www.nasa.gov/sites/default/files/styles/full_width_feature/public/thumbnails/image/leisa_christmas_false_color.png?itok=75o-jlD5"; 
     let request = NSURLRequest(URL: NSURL(string: imageURL)!) 
     let urlConnection = NSURLConnection(request: request, delegate: self, startImmediately: true) 
     urlConnection?.start() 
    } 

extension ViewController: NSURLConnectionDelegate, NSURLConnectionDataDelegate { 

    func connection(connection: NSURLConnection, didReceiveData data: NSData) { 
     self.receivedData.appendData(data) 
    } 

    func connectionDidFinishLoading(connection: NSURLConnection) { 
     self.imageView.image = UIImage(data: receivedData) 
    } 
} 

Я надеюсь, что это вам поможет.

Смежные вопросы