Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 防止设置更改动画_Ios_Swift_Core Animation_Uiviewanimation - Fatal编程技术网

Ios 防止设置更改动画

Ios 防止设置更改动画,ios,swift,core-animation,uiviewanimation,Ios,Swift,Core Animation,Uiviewanimation,基本上,我改变了导航栏的标题,然后我想设置背景颜色的动画。这样做的守则: navigationItem.titleView = nil let transition = CATransition() transition.duration = 0.5 self.navigationController?.navigationBar.layer.addAnimation(transition, forKey: nil) self.navigationController?.navigationB

基本上,我改变了导航栏的标题,然后我想设置背景颜色的动画。这样做的守则:

navigationItem.titleView = nil
let transition = CATransition()
transition.duration = 0.5

self.navigationController?.navigationBar.layer.addAnimation(transition, forKey: nil)
self.navigationController?.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default)
不幸的是,这也将使标题的更改变得生动。我希望标题立即更改,然后设置背景更改的动画。目前,我已通过添加延迟功能对其进行了修复:

func delay(delay: Double, closure: () -> Void) {
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, Int64(delay * Double(NSEC_PER_SEC))), dispatch_get_main_queue(), closure)
}
但是有没有一种更微妙的方法来代替增加延迟

编辑:

多亏了Joshua Pozzi的回答,我改变了它,但它仍然不起作用

let transition = CATransition(); transition.duration = 0.5

CATransaction.begin()
self.navigationController?.navigationBar.layer.addAnimation(transition, forKey: nil)
self.navigationController?.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default)

CATransaction.setDisabledActions()
self.navigationController?.navigationBar.topItem.title = ""

CATransaction.commit()

请参阅
CATransaction.setDisableTransactions()

谢谢,我更改并尝试了它,但它仍然与其他动画一起进行动画制作。您在编辑中发布的代码没有完全使用我在回答中提到的方法…抱歉,我测试了不同的内容,并复制粘贴了错误的内容。现在编辑了这个问题,仍然不起作用。嗯,现在我再次检查,我正在使用
setDisabledActions
。是时候进行更多的挖掘了:pSorry——我给出了OSX的答案
setDisableActions()
是正确的方法。我认为,问题在于你打电话的顺序。您需要一个事务,其中的操作对于您的文本更改被禁用;其余的可以(但不必)在他们自己的事务中。