我正在为自定义活动指示器执行一个非常简单的动画,如下所示:
var iconView: UIImageView!
let animation = CABasicAnimation(keyPath: "transform.rotation")
animation.fromValue = 0
animation.toValue = 2 * M_PI
animation.repeatCount = .infinity
animation.duration = 1.25
iconView.layer.addAnimation(animation, forKey: animation.keyPath)
iconView只显示一个96x96像素的图像,该图像随着显示的动画代码一起旋转。
这很好用,但是当使用动画时,我的后台进程会花费超过310%的时间!后台进程在NSOperationQueue中的NSBlockOperation中完成:
public var backgroundQueue = NSOperationQueue()
backgroundQueue.qualityOfService = .UserInitiated
let operation1 = NSBlockOperation()
operation1.queuePriority = NSOperationQueuePriority.VeryHigh
operation1.qualityOfService = .UserInitiated
在以下时间乐器跟踪存档中,第一个跟踪是使用动画完成的,大约需要1分24秒。与第二条跟踪的唯一区别是我禁用了上面的CABasicAnimation代码,同样的处理需要27秒!
我检查了个人资料,但无法找到任何理由,为什么需要这么长时间。我认为可能是我使用UIVisualEffectView视图作为自定义活动指示器的背景,但是禁用它没有任何明显的改进(对于上面的跟踪禁用)。任何见解或建议将不胜感激。
更新:使用UIActivityIndicatorView需要更合理的29秒(相比之下没有任何指标的27)。