iphone - CGContextSetShadow 不产生任何结果

标签 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);
}

圆圈和渐变画得很好,但我看不到阴影。我不确定为什么它不起作用,因为我在不同的 View 子类中使用了相同的 CGContextSetShadow 函数并且它工作得很好。

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

最佳答案

渐变绘制不算填充;只有填充和描边才会有阴影。 (您可能需要report this as a bug。)

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

关于iphone - CGContextSetShadow 不产生任何结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2263273/

相关文章:

iphone - 苹果单例查询示例?

objective-c - initWithCoder :?中NSCoder有什么用(Cocoa和Cocoa Touch)

xcode - 我可以在 Snow Leopard 机器上为 Lion 开发应用程序吗?

ios - 以编程方式在 iPhone 应用程序上显示键盘

ios - UIModalPresentationFormSheet 关闭 iOS 中首选项的事件

ios - iPhone iOS 支持 UNIX C 语言环境吗?

iphone - 批量购买是否适用于应用内购买?

ios - 后台 iOS 视频合并

ios - 创建 300 dpi PDF 上下文

iphone - UIImagePickerController 检查用户是否编辑了图像