我正在开发一个基于相机的应用程序,并希望在相机预览上制作一个模糊的叠层,在模糊视图中切出一个圆角矩形。
我一直尝试使用iOS 8引入的UIView的maskLayer来实现这个效果,但一直没有成功。
以下是我的代码:
我一直尝试使用iOS 8引入的UIView的maskLayer来实现这个效果,但一直没有成功。
以下是我的代码:
// Blur the preview
UIBlurEffect *effect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIView *blurView = [[UIVisualEffectView alloc] initWithEffect:effect];
blurView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view insertSubview:blurView aboveSubview:imagePicker.view];
// Make blur view fill screen
{
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[blurView]-0-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(blurView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[blurView]-0-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(blurView)]];
}
// Add a rounded of transparency to the blurView **not working**
UIView *mask = [[UIView alloc] initWithFrame:CGRectMake(50.f, 50.f, 50.f, 50.f)];
mask.alpha = 1.0f;
mask.backgroundColor = [UIColor redColor];
[blurView setMaskView:mask]; // Remove this line, and everything is frosted. Keeping this line and nothing is frosted.
从我的评论中可以看出,添加遮罩完全消除了毛玻璃效果(改变遮罩的不透明度没有任何作用)。我知道这不会产生我想要的效果(它应该只在矩形区域内呈现毛玻璃效果),但我无法让 maskView 在任何情况下正常工作。