OStack程序员社区-中国程序员成长平台

标题: iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 02:02
标题: iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?

我正在尝试在 UIView 中绘制一个简单的圆圈。我知道我可以使用 QuartzCore 做到这一点,但我想使用 drawRect 方法:

- (void)drawRectCGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor greenColor] CGColor]));
    CGContextFillPath(ctx);
}

当我设置 [UIColor whiteColor] 时,上面的代码不起作用。当 [UIColor whiteColor] View 会变得透明..

为什么当颜色为白色时 View 变得透明?我怎样才能画一个白色的圆圈?



Best Answer-推荐答案


CGContextSetFillColor 的文档说明第二个参数如下:

An array of intensity values describing the color to set. The number of array elements must equal the number of components in the current fill color space, plus an additional component for the alpha value.

greenColor 来自 RGB 颜色空间。但 whiteColor 不是。因此,在使用 whiteColor 时,您最终会传递错误数量的颜色分量。

一个更简单的解决方案是替换:

CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor greenColor] CGColor]));

与:

[[UIColor greenColor] set];

或:

[[UIColor whiteColor] set];

更新:

如果您真的想使用 Core Graphics,另一种选择是:

CGContextSetFillColorWithColor(ctx, [UIColor greenColor].CGColor);

关于iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15732103/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4