iOS 使用贝塞尔曲线,报错说是上下文错误

来源:互联网 发布:尚观linux培训 骗局 编辑:程序博客网 时间:2024/05/29 09:52

使用贝塞尔曲线运行后出现无效上下文错误,这里记录一下。

写的代码是:

-(void)drawRect:(CGRect)rect

{

    

    //1.圆形

    UIBezierPath *bPath = [UIBezierPath bezierPathWithArcCenter:CGPointMake(300, 300) radius:50

                                                     startAngle: DEGREES_TO_RADIANS(135) endAngle:M_PI*2 clockwise:YES];

    

    //设置颜色

    [[UIColor redColor]setStroke];

    //设置线宽

    [bPath setLineWidth:5];

    //绘制

    [bPath stroke];

    }


错误日志是:

<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

在网上查了很多资料,都说iOS9的适配问题,就是app的状态栏样式在iOS9上不兼容,很明显不是这方面的问题。仔细想想,在drawRect:方法中,绘制图时并没有设置图形上下文,就是说没有图层。因此要加上以下代码:

   CAShapeLayer *layer = [CAShapeLayer layer];

    layer.frame = rect;

    layer.strokeColor = [UIColor redColor].CGColor;

    layer.fillColor = [UIColor whiteColor].CGColor;

    layer.path = aPath.CGPath;

    [self.view.layer addSublayer:layer];

    [self.view setNeedsDisplay];


这样就可以了。


0 0
原创粉丝点击