菜鸟教程小白 发表于 2022-12-13 02:02:57

iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?


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

<pre><code>- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGContextAddEllipseInRect(ctx, rect);
    CGContextSetFillColor(ctx, CGColorGetComponents([ CGColor]));
    CGContextFillPath(ctx);
}
</code></pre>

<p>当我设置 <code></code> 时,上面的代码不起作用。当 <code></code>View 会变得透明..</p>

<p>为什么当颜色为白色时 View 变得透明?我怎样才能画一个白色的圆圈?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>CGContextSetFillColor</code> 的文档说明第二个参数如下:</p>

<blockquote>
<p>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.</p>
</blockquote>

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

<p>一个更简单的解决方案是替换:</p>

<pre><code>CGContextSetFillColor(ctx, CGColorGetComponents([ CGColor]));
</code></pre>

<p>与:</p>

<pre><code>[ set];
</code></pre>

<p>或:</p>

<pre><code>[ set];
</code></pre>

<p>更新:</p>

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

<pre><code>CGContextSetFillColorWithColor(ctx, .CGColor);
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/15732103/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/15732103/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iphone - 为什么尝试使用 drawRect 绘制彩色圆圈时颜色是透明的?