在iOS中绘制一个圆圈

时间:2014-09-02 06:15:37

标签: ios core-graphics

尝试将圆圈(精确定位为星星)绘制到黑色背景上。通过Stack搜索,但其他解决方案都没有工作。

尝试使用;

CGContextRef contextRef = UIGraphicsGetCurrentContext();
CGContextFillEllipseInRect(contextRef, CGRectMake(100, 100, 5, 5));
CGContextSetRGBFillColor(contextRef, 0, 0, 0, 1.0);  

圈子未显示,并且日志中出现以下错误消息:

  

<错误>:CGContextSetRGBFillColor:无效的上下文0x0。   这是一个严重的错误。此应用程序或它使用的库是   使用无效的上下文,从而有助于整体   系统稳定性和可靠性降低。这个通知是一个   礼貌:请解决这个问题。它将成为一个致命的错误   即将到来的更新。

任何帮助解决这个问题(即使完全不同/更容易实现我的目标)都将不胜感激。

3 个答案:

答案 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层。希望它有所帮助。