考虑以下内容......
假设我有两个CALayer,一个在另一个之上。每一层都是整个iPad屏幕的大小,顶层遮盖了底层。
是否有某种方法可以将 top 图层的一部分标记为“透明”,以便 bottom 图层的相同部分透过透明部分显示?换句话说,有没有办法“切掉”顶层的一部分,露出下面的底层?
答案 0 :(得分:0)
CALayer mask
属性。您需要在整个边界上将CALayer子类化为drawToContext:
不透明黑色,然后执行CGContextClear(ctx, <your see-through box>);
然后创建图层的一个实例,为它提供与顶层边界相同的框架,并将其设置为蒙版属性。
答案 1 :(得分:0)
是的,您可以通过为每个图层创建不同的Alpha值来实现, 基本上内层(超级)应至少具有0.7的alpha值,外层(subLayer)应具有比其父级更低的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];
//尝试使用不同的alpha值,但使用outerAlpha
答案 2 :(得分:0)
您使用CALayer作为UIView的子图层吗?您必须将UIView的backgroundColor设置为清除如下:
self.backgroundColor = [UIColor clearColor];
答案 3 :(得分:-1)
将backgroundColor
属性设为NULL
只会帮助我。