Ios 使卷帘透明
考虑以下几点 假设我有两个CALayer's,一个在另一个之上。每一层都是整个iPad屏幕的大小,顶层遮住了底层Ios 使卷帘透明,ios,calayer,quartz-graphics,quartz-core,Ios,Calayer,Quartz Graphics,Quartz Core,考虑以下几点 假设我有两个CALayer's,一个在另一个之上。每一层都是整个iPad屏幕的大小,顶层遮住了底层 是否有办法将顶层的一部分标记为“透明”,以便底层的同一部分通过透明部分显示?换句话说,是否有一种方法可以“剪切”顶层的一部分,以显示底层下方?CALayermask属性。您需要将CALayer子类化为整个边界上的drawToContext:不透明黑色,然后执行CGContextClear(ctx,) 然后创建一个层的实例,给它与顶层边界相同的帧,并将其设置为mask属性。是的,可以通
是否有办法将顶层的一部分标记为“透明”,以便底层的同一部分通过透明部分显示?换句话说,是否有一种方法可以“剪切”顶层的一部分,以显示底层下方?CALayer
mask
属性。您需要将CALayer子类化为整个边界上的drawToContext:
不透明黑色,然后执行CGContextClear(ctx,)代码>
然后创建一个层的实例,给它与顶层边界相同的帧,并将其设置为mask属性。是的,可以通过为每个层设置不同的alpha值来实现,
基本上,内层(超级层)的alpha值应至少为0.7,外层(子层)的alpha值应小于其父层,比方说0.3
然后外层应该露出内层
//
CALayer *innnerLayer = [CALayer layer];
innnerLayer.borderColor = [UIColor greenColor].CGColor;
innnerLayer.borderWidth = 0.8f;
innnerLayer.backgroundColor = [UIColor colorWithWhite:0. alpha:0.5].CGColor;
innnerLayer.frame = CGRectMake(70.0, 150.0f, 100.0f, 100.0f);
CALayer *outLayer = [CALayer layer];
outLayer.frame = innnerLayer.bounds;
outLayer.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.3f].CGColor;
// add outer layer to inner layer
[innnerLayer addSublayer:outLayer];
// add the inner layer to main view
[self.view.layer addSublayer:innnerLayer];
但是如果你想做一些更好的揭示,你可以画外层,通过设置径向梯度
这是我的示例代码,但我没有为外层绘制径向渐变
//
CALayer *innnerLayer = [CALayer layer];
innnerLayer.borderColor = [UIColor greenColor].CGColor;
innnerLayer.borderWidth = 0.8f;
innnerLayer.backgroundColor = [UIColor colorWithWhite:0. alpha:0.5].CGColor;
innnerLayer.frame = CGRectMake(70.0, 150.0f, 100.0f, 100.0f);
CALayer *outLayer = [CALayer layer];
outLayer.frame = innnerLayer.bounds;
outLayer.backgroundColor = [UIColor colorWithWhite:0.f alpha:0.3f].CGColor;
// add outer layer to inner layer
[innnerLayer addSublayer:outLayer];
// add the inner layer to main view
[self.view.layer addSublayer:innnerLayer];
//使用不同的alpha值进行实验,但是只需将backgroundColor
属性设置为NULL
对我有帮助。是否将CALayer用作UIView的子层?您必须将UIView的背景色设置为如下所示:
self.backgroundColor = [UIColor clearColor];
下面有一个链接可以解决这个问题,你能举个例子吗?