CGContextSetShadow не дает результатов - PullRequest
3 голосов
/ 15 февраля 2010

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

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetShadow (context, CGSizeMake(4,4), 5);
    CGContextBeginPath (context);
    CGContextAddEllipseInRect(context, CGRectMake(self.bounds.origin.x, self.bounds.origin.y, 38, 38));
    CGContextClosePath (context);
    CGContextClip (context);
    CGContextDrawLinearGradient(context, gradient, CGPointMake(CGRectGetMinX(self.bounds), CGRectGetMaxX(self.bounds)), CGPointMake(CGRectGetMaxX(self.bounds), CGRectGetMinY(self.bounds)), 0);
}

Круг и градиент хорошо рисуются, но тени не вижу. Я не уверен, почему он не работает, потому что я использовал ту же функцию CGContextSetShadow в другом подклассе представления, и она работала нормально.

ПРИМЕЧАНИЕ: В приведенном выше коде «градиент» - это ивар, который был определен ранее.

1 Ответ

3 голосов
/ 15 февраля 2010

Градиентное рисование не считается заполнением; только заливки и штрихи получают тени. (Вы можете сообщить об этом как об ошибке .)

В качестве обходного пути, заполните путь (сплошным черным), затем выключите тень и нарисуйте градиент.

...