目前,我正在使用 UIVisualEffectView 对图像应用模糊。
我有一个 UIScrollView。当我在“scrollViewDidScroll”方法中向下拉滚动视图时,我正在更改 UIVisualEffectView 的 alpha。当前的行为是,当我在视图中拖动时,模糊半径会平滑变化。
当然,问题是我不应该这样做。获取有关更改 UIVisualEffectView 的 alpha 值的警告。
我见过有人说使用动画进行模糊的平滑过渡,如下所示:如何淡入淡出 UIVisualEffectView 和/或 UIBlurEffect? https://stackoverflow.com/questions/29307827/how-does-one-fade-a-uivisualeffectview-and-or-uiblureffect-in-and-out
然而,我还没有看到任何可以让我在过程中做到这一点的东西,比如平移手势之类的。我的意思是,如果我设置一个定时量的动画,那就太好了。但在拖拽过程中这样做呢?
有一种方法 :)
正如您所注意到的,您可以从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 上不起作用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)