Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/107.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 有没有办法防止CALayer阴影与相邻层重叠?_Ios_Core Animation - Fatal编程技术网

Ios 有没有办法防止CALayer阴影与相邻层重叠?

Ios 有没有办法防止CALayer阴影与相邻层重叠?,ios,core-animation,Ios,Core Animation,我有一套CALayers。每个层都是同一父层的子层,并且每个层都应用了阴影。这些层是动态定位的,而且有很多层,所以我无法预测它们将如何提前安排 如果层彼此相邻(足够近以至于几乎接触),则其中一个CALayer的阴影将呈现在另一个CALayer的顶部。在大多数情况下,这可能是理想的效果,但我希望我的层存在于同一个z平面中。(例如,CSS3阴影应用于网页设计中的块元素。) 这可能吗?我怎样才能做到这一点 (我的想法是:用我自己的阴影图像为每个CALayer添加一个“阴影”子层,并将z位置设置为一个较

我有一套
CALayers
。每个层都是同一父层的子层,并且每个层都应用了阴影。这些层是动态定位的,而且有很多层,所以我无法预测它们将如何提前安排

如果层彼此相邻(足够近以至于几乎接触),则其中一个
CALayer
的阴影将呈现在另一个
CALayer
的顶部。在大多数情况下,这可能是理想的效果,但我希望我的层存在于同一个z平面中。(例如,CSS3阴影应用于网页设计中的块元素。)

这可能吗?我怎样才能做到这一点


(我的想法是:用我自己的阴影图像为每个
CALayer
添加一个“阴影”子层,并将z位置设置为一个较低的值。但是图层树不是不可能做到这一点吗?一个图层坐标系中的z位置独立于另一个图层坐标系中的z位置,对吗?)

如果所有阴影层都具有相同的阴影设置,请将它们放在容器层中,并在容器层上设置阴影。例如:

- (void)viewDidLoad
{
    [super viewDidLoad];

    CALayer *containerLayer = [CALayer layer];
    containerLayer.frame = self.view.bounds;
    containerLayer.shadowRadius = 10;
    containerLayer.shadowOpacity = 1;
    [self.view.layer addSublayer:containerLayer];

    CAShapeLayer *layer1 = [CAShapeLayer layer];
    layer1.bounds = CGRectMake(0, 0, 200, 200);
    layer1.position = CGPointMake(130, 130);
    layer1.path = [UIBezierPath bezierPathWithOvalInRect:layer1.bounds].CGPath;
    layer1.fillColor = [UIColor redColor].CGColor;
    [containerLayer addSublayer:layer1];

    CAShapeLayer *layer2 = [CAShapeLayer layer];
    layer2.bounds = CGRectMake(0, 0, 200, 200);
    layer2.position = CGPointMake(170, 200);
    layer2.path = [UIBezierPath bezierPathWithOvalInRect:layer2.bounds].CGPath;
    layer2.fillColor = [UIColor blueColor].CGColor;
    [containerLayer addSublayer:layer2];
}
输出:


哇,谢谢你!事后看来,这是显而易见的。我确实想到了这个想法,但我想它会在容器层的形状上应用阴影(不管是什么,哈哈)。