尝试将圆圈(精确定位为星星)绘制到黑色背景上。通过Stack搜索,但其他解决方案都没有工作。
尝试使用;
CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 5, 5));
CGContextSetRGBFillColor(contextRef, 0, 0, 0, 1.0);
圈子未显示,并且日志中出现以下错误消息:
<错误>:CGContextSetRGBFillColor:无效的上下文0x0。 这是一个严重的错误。此应用程序或它使用的库是 使用无效的上下文,从而有助于整体 系统稳定性和可靠性降低。这个通知是一个 礼貌:请解决这个问题。它将成为一个致命的错误 即将到来的更新。
任何帮助解决这个问题(即使完全不同/更容易实现我的目标)都将不胜感激。
答案 0 :(得分:1)
我在最近的一个项目中使用过这个并且运行良好:
-(UIView *)circleWithColor:(UIColor *)color radius:(int)radius {
UIView *circle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2 * radius, 2 * radius)];
circle.backgroundColor = color;
circle.layer.cornerRadius = radius;
circle.layer.masksToBounds = YES;
return circle;
}
然后添加到当前视图(例如在UIViewController子类中):
UIView *instoreImageDot=[self circleWithColor:[UIColor redColor] radius:4];
[self.view addSubview:instoreImageDot];
答案 1 :(得分:0)
试试这个圆圈
UIView * circle = [[UIView alloc]initWithFrame:CGRectMake(100, 100, 10, 10)];
circle.layer.borderWidth = 2.0f;
circle.layer.borderColor = [UIColor redColor].CGColor;
circle.layer.cornerRadius = circle.frame.size.width/2.0;
circle.layer.masksToBounds = YES;
[self.view addSubview: circle];
答案 2 :(得分:0)
如果您只是尝试使用CAShapeLayer在屏幕上绘制圆圈是最简单的方法。
CAShapeLayer *circle = [CAShapeLayer layer];
circle.path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 100, 100)].CGPath;
circle.fillColor = [UIColor blueColor].CGColor;
[self.view.layer addSublayer:circle];
此代码创建一个CAShapeLayer,然后将其路径设置为您定义的CGRect中的椭圆。这个在屏幕的左上方绘制一个100x100的圆圈。然后将图层添加到任何其他图层。因此,对于基本实现,只需将其添加到您正在使用的UIView层。希望它有所帮助。