如果这些图层彼此相邻(足够接近它们几乎接触),其中一个CALayers的阴影将呈现在另一个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,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,200); layer2.position = CGPointMake(170,200); layer2.path = [UIBezIErPath bezIErPathWithovalInRect:layer2.bounds].CGPath; layer2.fillcolor = [UIcolor bluecolor].CGcolor; [containerLayer addSublayer:layer2];}
输出:
总结以上是内存溢出为你收集整理的ios – 有没有办法防止CALayer阴影重叠相邻的图层?全部内容,希望文章能够帮你解决ios – 有没有办法防止CALayer阴影重叠相邻的图层?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)