[英]draw line between 2 points in objective-c
我想在2点之间画线。 但是UIGraphicsGetCurrentContext()返回null
ViewController.m
self.drawLine.firstPoint = self.btnPointOne.bounds.origin;
self.drawLine.secondPoint = self.btnPointTwo.bounds.origin;
[self.drawLine drawRect:self.drawWatchModeView.bounds];
DrawLine.h
@interface DrawLine : UIView{
CGContextRef context;
}
@property (assign, nonatomic) CGPoint firstPoint;
@property (assign, nonatomic) CGPoint secondPoint;
DrawLine.m
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
}
return self;
}
- (void)drawRect:(CGRect)rect {
context = UIGraphicsGetCurrentContext();
// Drawing code
CGContextSetStrokeColorWithColor(context, [UIColor blackColor].CGColor);
//line width
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint(context, self.firstPoint.x, self.firstPoint.y);
CGContextAddLineToPoint(context, self.secondPoint.x, self.secondPoint.y);
// and now draw the Path!
CGContextStrokePath(context);
}
但是它出错
CGContextSetStrokeColorWithColor:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetLineWidth:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextMoveToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextAddLineToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextDrawPath:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetStrokeColorWithColor:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetLineWidth:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextMoveToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextAddLineToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextDrawPath:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetStrokeColorWithColor:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetLineWidth:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextMoveToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextAddLineToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextDrawPath:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetStrokeColorWithColor:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextSetLineWidth:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextMoveToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextAddLineToPoint:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
CGContextDrawPath:无效的上下文0x0。 如果要查看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE环境变量。
我尝试UIViewControllerBasedStatusBarAppearance
集YES
它不适合我工作,我尝试删除UIViewControllerBasedStatusBarAppearance
它不适合我
您不能只在需要时调用drawRect:
,所以您的代码行:
[self.drawLine drawRect:self.drawWatchModeView.bounds];
需要更改以要求操作系统运行绘制周期。 发生这种情况时,将设置绘图上下文,并且一切就绪。 当您明确运行它时,该上下文不存在。 因此,将该行更改为:
[self.drawLine setNeedsDisplay];
要么
[self.drawLine setNeedsDisplayInRect:self.drawWatchModeView.bounds];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.