

iOSプログラム(Swift)でsliderバーで変更した際に画像をhttpアクセスして取得した画像を表示するプログラムを作っています。同期処理にするとスライド動作が非常に重くなります。非同期にすると必要の無い画像を律儀に取得して画像が出るまで時間がかかります。やりたいことはスライドバー変更時に前にたまっていたキューをキャンセルして、最後のキューのみ処理させたいと思います。非同期の際のソースの一部を載せておきます。どうやればいいかご存知の方はご教授ください。

[code]

    @IBAction func slidertime(sender: UISlider) {
        let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
        let group = dispatch_group_create()
        dispatch_group_async(group, queue, { () -> Void in
            var urlstring = "http://test.com/img.php?number=" + String(Int(sender.value * 100))
            var url = NSURL(string: urlstring)
            var err: NSError?
            var imgeData :NSData = NSData(contentsOfURL: url!, options: NSDataReadingOptions.DataReadingMappedIfSafe, error: &err)!
            self.thumbnail.image = UIImage(data:imgeData)
        })
    }
    
[/code]


CC BY-SA 3.0
2015-07-02T09:52:06.950
11961
2015-08-07T11:55:05.143
8593
question
ios swift xcode
(Swift) スライダーバーで画像を変更するが処理が遅い対応


スライダーを動かして、動かし終わった時のみ処理をしたいということですよね？

  1. スライダーの最新の値を保持
  2. タイマーなどで一定間隔で「現在の値」と「保持した値」を比較
  3. 現在の値と保持した値が同一な場合に処理

といった処理ではいかがでしょうか。


CC BY-SA 3.0
2015-07-09T04:34:34.010
12187
2015-07-09T04:34:34.010
7376
11961
answer


スライダーのvalueChangedイベントではなく、touchUpInsideイベントが走った時に画像を取得するのはどうですか？？


CC BY-SA 3.0
2015-08-07T11:55:05.143
13147
2015-08-07T11:55:05.143
3574
11961
answer