Трудно рисовать тень

Я пытаюсь создать пользовательскую тень для UIView, используя UIBezierPath. Я хочу, чтобы это была наклонная тень, хотя у меня возникают трудности с рисованием пользовательского пути.

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;

Тень не появляется. Когда я просто устанавливаю путь тени вокруг границы представления, тень отображается правильно. Поэтому я неправильно рисую путь Безье. Есть идеи?

Это работает:

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

person Jack Humphries    schedule 23.06.2013    source источник


Ответы (1)


Вам нужно определить закрытый путь. Не нужно его гладить.

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;
person rob mayoff    schedule 23.06.2013