Ios 在Objective-C中的屏幕顶部和底部添加模糊遮罩
我需要像这样在屏幕的顶部和底部添加遮罩Ios 在Objective-C中的屏幕顶部和底部添加模糊遮罩,ios,objective-c,uiimage,gradient,mask,Ios,Objective C,Uiimage,Gradient,Mask,我需要像这样在屏幕的顶部和底部添加遮罩 我怎样才能做到这一点 我可以想出一种方法来达到这个效果。但你需要的不是模糊遮罩,你需要使用剪辑遮罩 1-呈现一个模态视图控制器,其视图包含背面的UIVisualEffectView,以及前面的scrollview/tableview/collection视图,该视图从顶部和底部偏移40px(或您想要的偏移量)。 2-使用根据任务定制的黑白图像将遮罩添加到滚动视图中,您可以使用以下代码添加遮罩: var maskImage = UIImage(name: "
我怎样才能做到这一点 我可以想出一种方法来达到这个效果。但你需要的不是模糊遮罩,你需要使用剪辑遮罩 1-呈现一个模态视图控制器,其视图包含背面的UIVisualEffectView,以及前面的scrollview/tableview/collection视图,该视图从顶部和底部偏移40px(或您想要的偏移量)。 2-使用根据任务定制的黑白图像将遮罩添加到滚动视图中,您可以使用以下代码添加遮罩:
var maskImage = UIImage(name: "yourMask")
var maskLayer = CALayer()
maskLayer.frame = scrollView.bounds()
maskLayer.contents = maskImage.CGImage
scrollview.layer.mask = maskLayer
3-或者,您也可以使用CAGradientLayer来实现相同的效果(这在缩放时也会更好)。关于如何创建渐变层,有很多关于堆栈溢出的解决方案,如下所示:
话虽如此,我不明白为什么你的问题被否决了。我认为这是一个非常好的问题
希望这有帮助
if (!UIAccessibilityIsReduceTransparencyEnabled()) {
self.BlurView.backgroundColor = [UIColor clearColor];
UIBlurEffect *blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *blurEffectView = [[UIVisualEffectView alloc] initWithEffect:blurEffect];
blurEffectView.frame = self.view.bounds;
[blurEffectView setAlpha:1.0];
[self.BlurView addSubview:blurEffectView];
}
其中,self.BlurView
是UIView
的类型
您可以将其保留在上视图和下视图中。并且可以根据您的上下尺寸调整frameblurEffectView.frame
希望这对你有帮助
UIVisualEffectView * vs = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
vs.frame = self.view.bounds;
[self.view addSubview:vs];
CAGradientLayer * layer = [CAGradientLayer layer];
layer.frame = tableHolder.bounds;
layer.colors = [NSArray arrayWithObjects:(id)[UIColor blackColor].CGColor, (id)[UIColor clearColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
layer.locations = @[@0.90,@0.99,@1.0];
layer.startPoint = CGPointMake(0.0, 1.0f);
layer.endPoint = CGPointMake(0.0f, 0.0f);
tableHolder.layer.mask = layer;
tableHolder.layer.masksToBounds = true;
[tableHolder.layer insertSublayer:layer atIndex:0];
你不是在“模糊”顶部和底部,而是通过渐变层逐渐掩盖它们。我想你应该查看以下链接: