CGContextSetShadow не дает никаких результатов
Я использую этот код в своем подклассе 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 ответ:
Градиентный рисунок не считается заливкой; только заливки и штрихи получают тени. (Возможно, вы захотите сообщить об этом как об ошибке .)
В качестве обходного пути, заполните путь (сплошным черным цветом), затем выключите тень, затем нарисуйте градиент.