我在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调用之前,将一个新的图像视图放置在与旧视图相同的位置的界面中,其中alpha0。在动画中,将其alpha更改为1,将旧图像视图的alpha更改为0,从而可见地执行交叉溶解。 (当然,这里也可以进行其他动画处理。)在完成块中,删除旧的(现在不可见)图像视图。

09-17 19:55