我的问题如下:
UIImageView
的 View 将通过动画进行更改,如下所示:
[UIView transitionWithView:_backgroundArtworkImageView
duration:ANIMATION_DURATION
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
_backgroundArtworkImageView.image = blurredImage;
}
completion:nil];
只要我在 ImageView 上没有 UIVisualEffectView
,它就可以完美地工作。如果使用顶部的模糊 View ,则根本不会产生动画。
我环顾四周,发现 snapshots of views可能值得研究一下,这似乎也是苹果在 iOS 上内部使用的,例如在打开应用程序切换器时;但我不太确定如何准确地处理它。
最佳答案
通过拍摄快照,将其附加到 super View ,隐藏真实 View ,在没有动画的情况下更改它,然后使用动画淡入真实 View 来使其工作。
__block UIView *snapshot = [_backgroundArtworkImageView snapshotViewAfterScreenUpdates:NO];
[_artworkContainer insertSubview:snapshot belowSubview:_backgroundArtworkImageView];
_backgroundArtworkImageView.alpha = 0.0f;
_backgroundArtworkImageView.image = blurredImage;
[UIView transitionWithView:_artworkContainer
duration:ANIMATION_DURATION
options:UIViewAnimationOptionTransitionCrossDissolve
animations:^{
_backgroundArtworkImageView.alpha = 1.0f;
}
completion:^(BOOL _) {
[snapshot removeFromSuperview];
snapshot = nil;
}];
编辑:我意识到模糊 View 需要很短的时间来更新,但为了解决这个问题,可以拍摄结果 View 的新快照,然后使用动画。
关于ios - 当上面有 UIVisualEffectView 时,UIImageView 的动画图像变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412432/