在animateAlongsideTransition块内的UIImage上进行交叉溶解

时间:2016-02-22 23:33:45

标签: ios uiview uinavigationcontroller uiviewanimation

我已为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: {
    // ...
})

这不起作用 - 它只是在动画完成后更改图像视图的图像(没有交叉溶解)。有没有办法在过渡期间进行交叉溶解?

1 个答案:

答案 0 :(得分:1)

只需手动完成转换所做的工作。在animateAlongsideTransition调用之前,将新图片视图放入界面中与原始视图位于同一位置,alpha0。在动画中,将其alpha更改为1并将旧图像视图的alpha更改为0,从而明显执行交叉溶解。 (当然也可以在这里做任何其他动画。)在完成块中,删除旧的(现在不可见的)图像视图。