难以画出阴影

时间:2013-06-23 21:42:04

标签: ios objective-c uibezierpath quartz-core

我正在尝试使用UIBezierPath为UIView创建自定义阴影。我希望它是一个倾斜的阴影,虽然我很难画出自定义路径。

self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 0.7f;
self.layer.shadowOffset = CGSizeMake(-5.0f, 10.0f);
self.layer.shadowRadius = 5.0f;
self.layer.masksToBounds = NO;

CGFloat shadowDepth = 20.0;

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0.0, 0.0)];
[path addLineToPoint:CGPointMake(self.bounds.size.width, shadowDepth)];
[path stroke];

self.layer.shadowPath = path.CGPath;

阴影没有出现。当我只是将阴影的路径设置为视图边框周围时,阴影就会正确显示。 因此,我必须错误地绘制bezier路径。任何想法?

这有效:

UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.bounds];

1 个答案:

答案 0 :(得分:3)

您需要定义一个封闭的路径。你不需要抚摸它。

UIBezierPath *path = [UIBezierPath bezierPath];
CGRect bounds = self.bounds;
CGFloat xMax = CGRectGetMaxX(bounds);
CGFloat yMax = CGRectGetMaxY(bounds);
[path moveToPoint:CGPointMake(bounds.x + shadowDepth, bounds.y)];
[path addLineToPoint:CGPointMake(xMax + shadowDepth, bounds.y)];
[path addLineToPoint:CGPointMake(xMax, yMax)];
[path addLineToPoint:CGPointMake(bounds.x, yMax)];
[path closePath];
self.layer.shadowPath = path.CGPath;
相关问题