【发布时间】:2015-11-12 16:45:31
【问题描述】:
我想将阴影应用到圆圈的外层空间。但是阴影半径在内部也有影响,所以核心圆看起来比实际要小
我这样画圆:
self.shadowLayer = [CALayer layer];
self.shadowLayer.frame = self.view.layer.bounds;
self.shadowLayer.shadowColor = [UIColor blueColor].CGColor;
self.shadowLayer.shadowRadius = 0;
self.shadowLayer.shadowOpacity = 1.0;
self.shadowLayer.shadowOffset = CGSizeMake(0,0);
CGRect frame = CGRectMake(0 , 50, self.view.bounds.size.width, self.view.bounds.size.width);
self.shadowLayer.shadowPath = [UIBezierPath bezierPathWithOvalInRect:CGRectInset(frame, 40, 40)].CGPath;
[self.view.layer addSublayer:self.shadowLayer];
但如果我将 self.shadowLayer.shadowRadius 从 0 更改为 30,结果是:
你可以看到,核心中纯色的尺寸缩小了。我希望该阴影仅在路径外部生效,并且纯色的大小与shadow radius = 0 的情况完全相同。截图后添加红色曲线。是不是只是为了看看大小的区别。
更新
一个想法是将shadowRadius 减少一半并将框架扩大相同的数量。我认为这已经足够好了。
【问题讨论】:
-
尝试为阴影层提供 -40,-40 作为 cgrectinset
-
它会太大。在这两种情况下,圆圈的框架应该保持不变。
标签: ios objective-c calayer shadow