我有一个小设置,我将MPMoviePlayerController设置为视频背景。我试图让它在更新/更改时顺利过渡。这是我目前的代码。 BTW,newBackground.view.alpha最初为0。
let oldBackground = currentBackground
self.view.insertSubview(newBackground.view, aboveSubview: oldBackground.view)
UIView.animateWithDuration(1.5 as NSTimeInterval, animations: {
newBackground.view.alpha = 1
}, completion: {
finished in
oldBackground.view.removeFromSuperview()
println("The subview should be removed now")
})
执行此操作时,会在newBackground开始淡入之前立即删除oldBackground.view。但是,println会在动画完成后发生。我不明白为什么removeFromSuperview会立即发生,但println会在我预期的时候发生。如果我删除oldBackground.view.removeFromSuperview()
,动画会淡入并且看起来很好(但是视图显然没有删除,它只是位于newBackground后面。)
编辑:奇怪的是,它似乎在模拟器中按预期工作。在我的iPhone 6 Plus上运行每次都会给我带来问题。我已经卸载并从Xcode重新运行它,问题仍然存在。
如果有人对我有任何建议,我会非常高兴。谢谢。
答案 0 :(得分:0)
我想在动画期间执行newBackground.view.alpha = 1
时,它会将背景带到可见性并覆盖oldBackground。
答案 1 :(得分:0)
当您将新子视图放在旧子视图上方时,旧的子视图会转到后面。这在动画代码开始之前发生。在插入之前,请确保新子视图的alpha为0。如果你想要淡出动画,你应该将oldBackground alpha设置为0。
像这样:
let oldBackground = currentBackground
newBackground.view.alpha = 0
self.view.insertSubview(newBackground.view, aboveSubview: oldBackground.view)
UIView.animateWithDuration(1.5 as NSTimeInterval, animations: {
newBackground.view.alpha = 1
oldBackground.view.alpha = 0
}, completion: {
finished in
oldBackground.view.removeFromSuperview()
println("The subview should be removed now")
})