滚动时对 TableViewCell 的模糊效果
Blur Effect on TableViewCell when scroll
现在我正在使用 LBBlurredImage
来模糊图像,但我想改为使用 iOS8
的 UIVisualEffectView
来模糊.
我很难实施,有什么想法吗?
用LBBLurredImage
实现:
- (void)updateData {
// Set up Screen
self.screenHeight = [UIScreen mainScreen].bounds.size.height;
//UIImage *background = [UIImage imageNamed:@"gray"];
UIImage *background = [UIImage imageNamed:backgroundImageGlobal];
// Background Image
self.backgroundImageView = [[UIImageView alloc] initWithImage:background];
self.backgroundImageView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:self.backgroundImageView];
// Background Image Blurred
self.blurredImageView = [[UIImageView alloc] init];
self.blurredImageView.contentMode = UIViewContentModeScaleAspectFill;
self.blurredImageView.alpha = 0.0; // 0.0
[self.blurredImageView setImageToBlur:background blurRadius:10 completionBlock:nil]; // blurRadius:10
[self.view addSubview:self.blurredImageView];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat height = scrollView.bounds.size.height;
CGFloat position = MAX(scrollView.contentOffset.y, 0.0);
CGFloat percent = MIN(position / height, 1.0);
self.blurredImageView.alpha = percent;
}
到目前为止,我 added/changed 对之前代码的最佳拍摄,使用 UIVisualEffectView
:
// iOS8
@property (nonatomic) UIVisualEffect *blurEffect;
@property (nonatomic) UIVisualEffectView *visualEffectView;
// iOS8 Blur
self.blurredImageView = [[UIImageView alloc] init];
self.blurredImageView.contentMode = UIViewContentModeScaleAspectFill;
self.blurredImageView.alpha = 0.0;
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = self.blurredImageView.bounds;
[self.blurredImageView addSubview:visualEffectView];
[self.view addSubview:self.blurredImageView];
我明白了。我用过:
// iOS8 Blur
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
self.visualEffectViewGlobal = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
self.visualEffectViewGlobal.frame = self.view.bounds;
self.visualEffectViewGlobal.alpha = 0.0;
[self.view addSubview:self.visualEffectViewGlobal];
现在我正在使用 LBBlurredImage
来模糊图像,但我想改为使用 iOS8
的 UIVisualEffectView
来模糊.
我很难实施,有什么想法吗?
用LBBLurredImage
实现:
- (void)updateData {
// Set up Screen
self.screenHeight = [UIScreen mainScreen].bounds.size.height;
//UIImage *background = [UIImage imageNamed:@"gray"];
UIImage *background = [UIImage imageNamed:backgroundImageGlobal];
// Background Image
self.backgroundImageView = [[UIImageView alloc] initWithImage:background];
self.backgroundImageView.contentMode = UIViewContentModeScaleAspectFill;
[self.view addSubview:self.backgroundImageView];
// Background Image Blurred
self.blurredImageView = [[UIImageView alloc] init];
self.blurredImageView.contentMode = UIViewContentModeScaleAspectFill;
self.blurredImageView.alpha = 0.0; // 0.0
[self.blurredImageView setImageToBlur:background blurRadius:10 completionBlock:nil]; // blurRadius:10
[self.view addSubview:self.blurredImageView];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat height = scrollView.bounds.size.height;
CGFloat position = MAX(scrollView.contentOffset.y, 0.0);
CGFloat percent = MIN(position / height, 1.0);
self.blurredImageView.alpha = percent;
}
到目前为止,我 added/changed 对之前代码的最佳拍摄,使用 UIVisualEffectView
:
// iOS8
@property (nonatomic) UIVisualEffect *blurEffect;
@property (nonatomic) UIVisualEffectView *visualEffectView;
// iOS8 Blur
self.blurredImageView = [[UIImageView alloc] init];
self.blurredImageView.contentMode = UIViewContentModeScaleAspectFill;
self.blurredImageView.alpha = 0.0;
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
visualEffectView.frame = self.blurredImageView.bounds;
[self.blurredImageView addSubview:visualEffectView];
[self.view addSubview:self.blurredImageView];
我明白了。我用过:
// iOS8 Blur
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
self.visualEffectViewGlobal = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
self.visualEffectViewGlobal.frame = self.view.bounds;
self.visualEffectViewGlobal.alpha = 0.0;
[self.view addSubview:self.visualEffectViewGlobal];