我有一个自定义的“点”视图,它是一个带有边框和背景颜色的圆圈,类似于iOS 7+左上角显示信号强度的点。
点可以填充也可以不填充。
填充点:
未填充点:
问题:我发布应用程序的时间占20%-30%,非填充点显示为黄色背景,即使明确指定了白色。
以下是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
永远不会被设置为黄色。只有你看到的蓝色边框。
什么可能导致这些有时会出现黄色?
答案 0 :(得分:1)
我认为这可能与此帖中提到的问题有关:Is there an issue with CGColorGetComponents?。当我替换这一行时,
CGContextSetFillColor(ctx, (CGFloat []){ 1, 1, 1, 1 });
对于您使用的那个,
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor whiteColor] CGColor]));
我没有看到任何偶然的黄色(我大多看到黑色,我运行你的代码时偶尔会出现黄色或白色)。