我需要从一组视图交叉淡入到另一组视图。这些观点有时背后有背景。如果我使用animateWithDuration进行天真的交叉淡入淡出:v1.alpha = 1.0,v2.alpha = 0.0,那么在动画期间,您将简要地看到背景,因为两个视图相互叠加的alpha 0.5不具备最终的alpha为1.0,他们的最终alpha值为0.75,因此你可以看到背景。
有一个UIView方法transitionFromView:toView:...如果指定动画选项CrossDissolve,它允许你实现理想的交叉淡入淡出,但是,如果你一次运行其中两个,即使完全分开,这个方法也会失败观点,这是一个要求。也就是说,如果我将transitionFromView从A启动到B,然后将transitionFromView从C启动到D,那么第一个将会废弃。
还有另一种方法可以实现不会破坏的正确交叉淡入淡出吗? CoreAnimation有没有适当交叉淡化的库?或者是否有一些技巧我可以使用常规的UIView动画来实现它?
答案 0 :(得分:1)
我认为v1
高于v2
(在subviews
数组中,如果它们具有相同的父级),并且您希望显示v1
并{{1}消失。
根本不需要为alpha v2
制作动画。只需将v2
的alpha设置为0到1的动画。当动画结束时,您可以根据需要将v1
的alpha设置为0,并将其从视图层次结构中删除。
v2
答案 1 :(得分:0)
这是您如何在两个视图之间进行分解的方法:
UIView.transition(from: fromView, to: toView, duration: 0.3, options: .transitionCrossDissolve) { (_ finished) in
// Completion block here
}