gpt4 book ai didi

ios - 如何使用 Core Graphics 在我的触摸位置画一个圆圈?

转载 作者:可可西里 更新时间:2023-11-01 04:31:01 25 4
gpt4 key购买 nike

这里是新程序员。我在尝试使用 Core Graphics 在触摸位置周围绘制描边弧时遇到问题。我有绘制圆圈的方法,工作正常,我已经测试并在点击屏幕时注册触摸,但是当我尝试在点击时调用绘制圆圈的方法时,出现错误“CG​​ContextBlahBlah:无效上下文0x0"

认为这是因为我没有调用 drawRect:() 中的方法。

那么我怎样才能在触摸时调用这个方法呢?此外,如何在我的绘制方法中使用“CGPoint locationOfTouch”作为参数?

这是我正在使用的代码块。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint locationOfTouch = [touch locationInView:self];
[self drawTouchCircle:(locationOfTouch)];
[self setNeedsDisplay];
}


-(void)drawTouchCircle:(CGPoint)locationOfTouch
{
CGContextRef ctx= UIGraphicsGetCurrentContext();

CGContextSaveGState(ctx);

CGContextSetLineWidth(ctx,5);
CGContextSetRGBStrokeColor(ctx,0.8,0.8,0.8,1.0);
CGContextAddArc(ctx,locationOfTouch.x,locationOfTouch.y,30,0.0,M_PI*2,YES);
CGContextStrokePath(ctx);
}

在此先感谢您的帮助!

最佳答案

是的,你是对的。问题在于,与其自己调用 drawTouchCircle,您应该实现一个为您调用它的 drawRect 方法,因此您的 touches 方法只需要调用 setNeedsDisplaydrawRect 会处理剩下的事情。因此,您可能希望将触摸位置保存在类属性中,然后在您的 drawRect 中检索它:

@interface View ()
@property (nonatomic) BOOL touched;
@property (nonatomic) CGPoint locationOfTouch;
@end

@implementation View

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event];

self.touched = YES;
UITouch *touch = [touches anyObject];
self.locationOfTouch = [touch locationInView:self];
[self setNeedsDisplay];
}

- (void)drawTouchCircle:(CGPoint)locationOfTouch
{
CGContextRef ctx= UIGraphicsGetCurrentContext();
CGRect bounds = [self bounds];

CGPoint center;
center.x = bounds.origin.x + bounds.size.width / 2.0;
center.y = bounds.origin.y + bounds.size.height / 2.0;
CGContextSaveGState(ctx);

CGContextSetLineWidth(ctx,5);
CGContextSetRGBStrokeColor(ctx,0.8,0.8,0.8,1.0);
CGContextAddArc(ctx,locationOfTouch.x,locationOfTouch.y,30,0.0,M_PI*2,YES);
CGContextStrokePath(ctx);
}

- (void)drawRect:(CGRect)rect
{
if (self.touched)
[self drawTouchCircle:self.locationOfTouch];
}

@end

关于ios - 如何使用 Core Graphics 在我的触摸位置画一个圆圈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com