ios - 当上面有 UIVisualEffectView 时,UIImageView 的动画图像变化

标签 ios objective-c animation uivisualeffectview

我的问题如下:

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/

相关文章:

ios - 对在新图像集中设置什么像素大小感到困惑

javascript - 在滚动条上移动垂直线

更新 Firefox 后 CSS3 动画波动

ios - 越狱 - 重新定位 Core Data 应用程序的 "Documents"目录

ios - 如何验证来自 iOS 应用程序的 http 请求?

ios - 使用 KFEpubKit 的 KissXML pod 问题

objective-c - 如何根据他们选择的上一个 View 中的哪个单元格自定义用户看到的 UITableView?

objective-c - 覆盖 layoutSubViews : causes "CGAffineTransformInvert: singular matrix" randomly

iphone - 将核心数据与 NSMutableArray 同步

ios - 没有动画的deleteRowsAtIndexPaths