CGContextSetShadow不会产生任何结果

时间:2010-02-14 23:23:42

标签: iphone cocoa cocoa-touch core-graphics cgcontext

我在我的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函数,它工作正常。

注意:在上面的代码中,“渐变”是之前定义的ivar。

1 个答案:

答案 0 :(得分:3)

渐变抽奖不算作填充;只有填充和笔画才能获得阴影。 (您可能需要report this as a bug。)

作为一种解决方法,填充路径(使用纯黑色),然后关闭阴影,然后绘制渐变。