如何在iOS中的某段时间内为图像的模糊值设置动画

时间:2014-10-15 06:04:43

标签: ios core-animation uiviewanimation

我希望在一段时间内将图像从0高斯模糊设置为25像素模糊值,让我们说0.5秒。我完全坚持这个。知道我该怎么办?

1 个答案:

答案 0 :(得分:2)

虽然将模糊半径逐渐从0调整到25似乎是理想的,但这可能是计算密集型的。在iPhone 5上,使用CIGaussianBlur滤镜,使用25px半径模糊320x568图像需要600毫秒。使用UIImage+ImageEffectsWWDC 2013 downloads page)使用vImage high-performance image processing framework需要150毫秒。显然,尝试在0.5秒内反复模糊图像将是站不住脚的。

但是,只需使用交叉溶解transitionWithView替换图像模糊图像:

UIImage *blurImage = [self blur:imageView.image radius:25];

[UIView transitionWithView:imageView duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    imageView.image = blurImage;
} completion:nil];

这可以为您描述的过渡提供平滑且非常令人信服的近似值。


此技术似乎也适用于UIBlurEffect上的iOS 8 UIVisualEffectView

UIVisualEffect *blurEffect;
blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];

UIVisualEffectView *visualEffectView;
visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];

visualEffectView.frame = imageView.bounds;

[UIView transitionWithView:imageView duration:0.5 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
    [imageView addSubview:visualEffectView];
} completion:nil];