PHPhotoLibrary.sharedPhotoLibrary().performChanges 中的活动指示器动作缓慢

Posted

技术标签:

【中文标题】PHPhotoLibrary.sharedPhotoLibrary().performChanges 中的活动指示器动作缓慢【英文标题】:Activity indicator acting slow inside PHPhotoLibrary.sharedPhotoLibrary().performChanges 【发布时间】:2015-08-03 07:32:12 【问题描述】:

我正在删除一些照片资产,我想在资产被删除时显示一个活动指示器,并在资产被删除但我的代码运行缓慢时停止它,你知道出了什么问题吗?

phphotoLibrary.sharedPhotoLibrary().performChanges(
            PHAssetChangeRequest.deleteAssets(enumeration)
            self.activityIndicator.startAnimating()
            UIApplication.sharedApplication().beginIgnoringInteractionEvents()
            , completionHandler: success, error in
                if success 
                    self.activityIndicator.stopAnimating()
                    UIApplication.sharedApplication().endIgnoringInteractionEvents()
                    println("Success")
                 else 
                    self.activityIndicator.stopAnimating()
                    UIApplication.sharedApplication().endIgnoringInteractionEvents()
                    println("Error")
                
        )

【问题讨论】:

【参考方案1】:

我自己解决了,答案如下:

PHPhotoLibrary.sharedPhotoLibrary().performChanges(
            PHAssetChangeRequest.deleteAssets(enumeration)

            let delay = 1 * Double(NSEC_PER_SEC)
            let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
            dispatch_after(time, dispatch_get_main_queue()) 
                self.activityIndicator.startAnimating()
            
            , completionHandler: success, error in

                UIApplication.sharedApplication().beginIgnoringInteractionEvents()

                if success 
                    println("good")
                    dispatch_async(dispatch_get_main_queue())
                        self.activityIndicator.stopAnimating()
                        self.navigationController?.popToRootViewControllerAnimated(true)
                    
                    UIApplication.sharedApplication().endIgnoringInteractionEvents()
                 else 
                    println("bad")
                    dispatch_async(dispatch_get_main_queue())
                        self.activityIndicator.stopAnimating()
                    
                    UIApplication.sharedApplication().endIgnoringInteractionEvents()
                
        )

只需要添加:

dispatch_async(dispatch_get_main_queue())
     self.activityIndicator.stopAnimating()

【讨论】:

以上是关于PHPhotoLibrary.sharedPhotoLibrary().performChanges 中的活动指示器动作缓慢的主要内容,如果未能解决你的问题,请参考以下文章