使用UIBezierPath绘图控制台<Eorro>CGContextSaveGState: invalid context 0x0,CGContextSetLineWidth: invalid co

真机调试,控制台打印的结果:


模拟器调试,控制台打印的结果:


代码:

UIBezierPath * bezierPath = [UIBezierPath bezierPathWithRoundedRect:(CGRect){5,5,self.bounds.size.width-10,self.bounds.size.height-10} cornerRadius:(self.bounds.size.height-10)/2];
    bezierPath.lineWidth = 2.0;
    bezierPath.lineCapStyle = kCGLineCapRound;
    bezierPath.lineJoinStyle = kCGLineCapRound;
//    [bezierPath stroke];   //如果控制台出现<Error>: CGContextSaveGState: invalid context 0x0.错误则注释掉
    
    //遮罩层
    
    CAShapeLayer * progressLayer = [CAShapeLayer layer];
    
    progressLayer.frame = self.bounds;
    
    progressLayer.fillColor =  [[UIColor clearColor] CGColor];
    
    progressLayer.strokeColor=[UIColor orangeColor].CGColor;

    progressLayer.lineWidth = 11;
    
    CALayer * grain = [CALayer layer];
    CAGradientLayer * gradientLayer = [CAGradientLayer layer];
    gradientLayer.frame = CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height);
    
    [gradientLayer setColors:[NSArray arrayWithObjects:(id)[selfBgColor CGColor],(id)[selfBgColor CGColor], nil]];
    
    [gradientLayer setLocations:@[@0.3,@1]];
    
    [gradientLayer setStartPoint:CGPointMake(0.9, 0.05)];
    
    [gradientLayer setEndPoint:CGPointMake(1, 1)];
    [grain addSublayer:gradientLayer];
    
    //用progressLayer来截取渐变层 遮罩
    
    
    [grain setMask:progressLayer];
    
    [self.layer addSublayer:grain];
    
    
    //增加动画
    
    CABasicAnimation *pathAnimation=[CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    
    pathAnimation.duration = self.countDownTime ;
    
    pathAnimation.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
    
    pathAnimation.fromValue=[NSNumber numberWithFloat:0.0f];
    
    pathAnimation.toValue=[NSNumber numberWithFloat:1.0f];
    
    pathAnimation.autoreverses = NO;
    pathAnimation.repeatCount = 0;
    progressLayer.path=bezierPath.CGPath;
    [progressLayer addAnimation:pathAnimation forKey:@"strokeEndAnimation"];




问题解决方法:

不要实现 - (void)stroke 方法 ;


效果图


用stm32f103rct6做12根线缆及接线端口通断错位线序测试仪,线缆A端子接3.3V并连接10K电阻输入12个GPIO,该处配置为浮空输入,栅极连另外12个GPIO串100R电阻接10K电阻下拉地控制3400 mos管导通,线缆B端连接漏极并分别连12个GPIO,该处配置为浮空输入,画出电路原理图及描述详细方案,详细代码,12个双向端子导通,LED亮绿灯,屏显示ok,至少有一端子断路及错搭其他端子(即线序)LED亮红灯闪烁,蜂鸣器笛笛响,用lcd12864屏,串行通讯,显示王eorro,屏幕显示对应1至12线序?比如断路显示字符为"1-*1”,错搭第1根跟第4线,显示字符“ 1-4”,同时两端插入1根以上导线自动检测,没有插入导线,机器闲置或休眠状态?全部完整详细程序代码,线缆两端插入后,MOS管未导通时,先检第1线缆A端GPIO口是否高电平,对应第1线缆B端GPIO口是否高电平,判断第1线缆通断,依次检测至第12线缆。然后第1线缆MOS导通,对应A端及B端的GPIO同时为低电平,则线序正确,否其他线缆B端为低电平,则错搭,依次MOS至第12线缆,以上信息存至数值内。若全部正确则屏幕正中显示"ok”,错误则第一行显示“Eorro",第二行显示有断路的线序符号,如显示字符为"1-*1”,第三次则显示搭错线的线序符号,如显示字符为“ 1-4”。详细电路原理图及详细全部完整程序代码。发至邮箱:197497857@qq.com
03-28
用stm32f103rct6做12根线缆及接线端口通断错位线序测试仪,3.3V线缆连10K电阻至A端子,A端连12个GPIO,该处GPIO配置为浮空输入,mos管栅极连10K电阻下拉地连接100R电阻连接另外12个GPIO控制3400 N型 mos管导通,线缆B端连接mos管漏极并分别连12个GPIO,该处GPIO配置为浮空输入,12个双向端子导通,LED亮绿灯,屏显示ok,用lcd12864屏,串行通讯,至少有一端子断路及错搭其他端子(即线序)LED亮红灯闪烁,蜂鸣器笛笛响,错误则第一行显示“Eorro",比如断路显示字符为"1-*1”,第二行显示有断路的线序符号,如显示字符为"1-*1”,如错搭第1根跟第4线,第三行则显示搭错线的线序符号,如显示字符为“ 1-4”。同时两端插入1根以上导线自动检测,没有插入导线,机器闲置或休眠状态?线缆两端插入后,例如检测1号线,MOS管未导通时,先检第1线缆A端GPIO口是否高电平,对应第1线缆B端GPIO口是否高电平,初步判断第1线缆通断,然后第1线缆MOS导通,对应A端及B端的GPIO同时为低电平,则线序正确,第1线缆MOS导通时第1线缆B端GPIO口为低电平,如果4号线的B端的GPIO为低电平,除1号线及4号线外的线缆A和B端都为高电平,则为1号错搭,最终判定为错搭,而不是第1线缆断路,第三行显示字符为“ 1-4”。按上述方式检测,以上信息全部存至数值内。若全部正确则屏幕正中显示"ok”,错误则第一行显示“Eorro",如有断路,第二行显示有断路的线序符号,如显示字符为"1-*1”,如有错搭第1根跟第4线,第三行则显示搭错线的线序符号,如显示字符为“ 1-4”。详细方案和电路原理图及详细全部完整标准库程序代码。
最新发布
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值