我希望在一段时间内将图像从0高斯模糊设置为25像素模糊值,让我们说0.5秒。我完全坚持这个。知道我该怎么办?
答案 0 :(得分:2)
虽然将模糊半径逐渐从0调整到25似乎是理想的,但这可能是计算密集型的。在iPhone 5上,使用CIGaussianBlur
滤镜,使用25px半径模糊320x568图像需要600毫秒。使用UIImage+ImageEffects
(WWDC 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];