2016-04-29 15 views
0

現在、プログレッシブJPGローダーを作成しようとしています。大きな画像がNSURLConnectionに渡されると、画像の半分を切り取ってしまうようです。画像を完了するために、データの最後のチャンクをスキップするように思わNSURLConnectionでプログレッシブJPGをダウンロード

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

:ここ

は私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) 
    } 
} 

を試してみてください。

関連する問題