gpt4 book ai didi

ios - 在保持背景动态的同时向 View 添加动画模糊

转载 作者:行者123 更新时间:2023-11-29 11:41:21 25 4
gpt4 key购买 nike

我正在尝试实现一个自定义模糊 View ,其中模糊半径可以设置动画,并且模糊 View 可以堆叠混合模式(CGBlendingModeCIFilter),同时保留发生在背景。

我首先尝试了 UIVisualEffectView,但是如果不访问 private APIs 就无法对半径进行动画处理这很可能会导致应用被拒绝。

拍摄快照和应用效果的问题是 View 是静态的,背景中的任何移动都被模糊 View 掩盖了。

我也看了FlexMonkey's Blurable ,但我得到了与快照相似的结果。

任何指导都会很有帮助。干杯

编辑:我添加了一个 gif 来演示我正在尝试制作的东西。从左到右移动的红色 View 模糊并放大了它下面的内容,同时显示了在它后面的红色/蓝色方 block 上发生的动画。

enter image description here

最佳答案

混合模式非常棘手,我不确定是否可以将它们应用到实时 UIView(GPUImage 可能 在这里有所帮助)但是动画模糊半径(在 0 和 UIVisualEffectView 的完全模糊之间) ) 可以通过 this method :

您可以从 nil 效果动画到 UIBlurEffectStyleDark 这样的效果,因此如果我们添加动画然后暂停图层的动画,我们可以通过以下方式控制效果的进度调整图层的timeOffset!

- (void) setupBlur {
// Setup the blur to start with no effect
self.blurredEffectView = [[UIVisualEffectView alloc] initWithEffect:nil];

// Add animation to desired blur effect
[UIView animateWithDuration:1.0 animations:^{
[self.blurredEffectView setEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
}];

// Pause layer animations
self.blurredEffectView.layer.speed = 0;
}

在 0.0 和 1.0 之间调整模糊(动画持续时间):

- (void) adjustBlur:(CGFloat)blurIntensity {
self.blurredEffectView.layer.timeOffset = blurIntensity;
}

注意:这不适用于不支持 UIBlurEffect 动画的 iOS 8。

关于ios - 在保持背景动态的同时向 View 添加动画模糊,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46383073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com