我在UINavigationController
过渡中添加了动画,这涉及到重新放置UIImageView
的位置:
transitionCoordinator()?.animateAlongsideTransition({ context in
UIView.performWithoutAnimation {
// ...
}
// ...
myImageView.frame = newFrame
}, completion: {
// ...
})
此代码位于
viewWillAppear(_:)
中。到目前为止,此代码可以正常工作。但是,我不仅要更改图像视图的框架,还希望使用交叉溶解来更改图像。我已经试过了:transitionCoordinator()?.animateAlongsideTransition({ context in
UIView.performWithoutAnimation {
// ...
}
// ...
myImageView.frame = newFrame
UIView.transitionWithView(boardImageView,
duration: context.transitionDuration(),
options: .TransitionCrossDissolve,
animations: {
myImageView.image = newImage
}, completion: nil)
}, completion: {
// ...
})
但是,这不起作用-它只是在动画完成后更改图像视图的图像(没有交叉溶解)。在过渡期间,有没有办法使十字架消散?
最佳答案
只需手动执行过渡将完成的操作即可。在animateAlongsideTransition
调用之前,将一个新的图像视图放置在与旧视图相同的位置的界面中,其中alpha
为0
。在动画中,将其alpha
更改为1
,将旧图像视图的alpha
更改为0
,从而可见地执行交叉溶解。 (当然,这里也可以进行其他动画处理。)在完成块中,删除旧的(现在不可见)图像视图。