Ios 使卷帘透明

Ios 使卷帘透明,ios,calayer,quartz-graphics,quartz-core,Ios,Calayer,Quartz Graphics,Quartz Core,考虑以下几点 假设我有两个CALayer's,一个在另一个之上。每一层都是整个iPad屏幕的大小,顶层遮住了底层 是否有办法将顶层的一部分标记为“透明”,以便底层的同一部分通过透明部分显示?换句话说,是否有一种方法可以“剪切”顶层的一部分,以显示底层下方?CALayermask属性。您需要将CALayer子类化为整个边界上的drawToContext:不透明黑色,然后执行CGContextClear(ctx,) 然后创建一个层的实例,给它与顶层边界相同的帧,并将其设置为mask属性。是的,可以通

考虑以下几点

假设我有两个CALayer's,一个在另一个之上。每一层都是整个iPad屏幕的大小,顶层遮住了底层


是否有办法将顶层的一部分标记为“透明”,以便底层的同一部分通过透明部分显示?换句话说,是否有一种方法可以“剪切”顶层的一部分,以显示底层下方?

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];

下面有一个链接可以解决这个问题,你能举个例子吗?