gpt4 book ai didi

ios - 自定义 View 有时会出现错误的背景颜色

转载 作者:行者123 更新时间:2023-11-29 02:24:24 24 4
gpt4 key购买 nike

我有一个自定义的“点” View ,它是一个带有边框和背景颜色的圆圈,类似于 iOS 7+ 左上角显示信号强度的点。

一个点可以被填充,也可以不被填充。

实心点:

Filled Dot

未填充点:

Not Filled Dot

问题:在我启动应用程序的情况下,有 20-30% 的时间,未填充的点会显示为黄色背景,即使明确指定了白色。

Unexpected yellow dots

这里是 drawRect 中的代码:

- (void)drawRect:(CGRect)rect
{
CGRect borderRect = CGRectInset(rect, 3, 3);
CGContextRef ctx = UIGraphicsGetCurrentContext();
if (self.filled) {
CGContextSetFillColor(ctx, CGColorGetComponents([self.color CGColor]));
} else {
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor whiteColor] CGColor]));
}
CGContextSetStrokeColor(ctx, CGColorGetComponents([self.color CGColor]));
CGFloat lineWidth = rect.size.height/10;
if (lineWidth < 1) {
lineWidth = 1.0;
}
CGContextSetLineWidth(ctx, lineWidth);
CGContextFillEllipseInRect(ctx, borderRect);
CGContextStrokeEllipseInRect(ctx, borderRect);
CGContextFillPath(ctx);
}

self.color 永远不会设置为黄色。只有您看到的蓝色边框。

什么可能导致这些有时显示为黄色?

最佳答案

我认为这可能与这篇文章中提到的问题有关:Is there an issue with CGColorGetComponents? 。当我替换这一行时,

 CGContextSetFillColor(ctx, (CGFloat []){ 1, 1, 1, 1 });

对于您使用的那个,

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

我没有看到任何偶尔的黄色(当我运行你的代码时,我主要看到黑色,偶尔有黄色或白色)。

关于ios - 自定义 View 有时会出现错误的背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27726689/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com