您好我想在iOS UITouch
的某个点周围绘制一个圆圈。我也想绘制在这一点上相交的十字准线,但我还没有那么远。这应该能够在最多10个触点处发生,这就是为什么你会在开始时看到for循环的原因。任何帮助将非常感激。
我列出了我的全局变量中的点,因为我在touchesBegan
,touchesMoved
和touchesEnded
中使用了它。我需要显示形状,直到启动新的触摸点。我对所有这些都相当新,而且有点压倒性的。
谢谢你的时间。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
radius = 10;
CGContextRef context = UIGraphicsGetCurrentContext();
for (UITouch *touch in touches)
{
point = [touch locationInView:self.view];
CGContextSetRGBStrokeColor(context, 255.0, 255.0, 0.0, 1.0);
CGContextAddArc(context, point.x, point.y, radius, 0, M_PI*2, YES);
CGContextStrokePath(context);
NSLog(@"X: %.3f Y: %.3f Began", point.x, point.y);
}
self.timestampstart = [NSDate date];
}
-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
self.timestampend = [NSDate date];
self.duration.text = [[NSString alloc] initWithFormat:@"%.3f s", [self.timestampend timeIntervalSinceDate:self.timestampstart]];
NSLog(@"X: %.3f Y: %.3f Ended. Duration %.3f", point.x, point.y, [self.timestampend timeIntervalSinceDate:self.timestampstart]);
}
答案 0 :(得分:1)
我认为问题在于您无法在此方法中使用Core Graphics。通常,drawRect
的{{1}}方法就是您要使用它的地方。
使用UIView
添加自定义UIView
子类(代表您的圈子)可能更好吗?所以你对它所属的每一个问题都有所了解:当有人点击视图时会发生什么以及你绘制的对象应该是什么样子。两个问题,很好地分开。 (关注点分离至少是你的朋友,请相信我。)
答案 1 :(得分:0)
我猜你的UITouch
内有UIView
个方法。您不需要单独的UIView进行绘制,但必须将绘图内容移动到方法drawRect
中。在setNeedsDisplay
方法中调用setNeedsDisplayInRect
或touchMoved
方法(我在代码中缺少这些方法!),iOS将完成剩下的工作。
通过调用setNeedsDisplay
或setNeedsDisplayInRect
通知iOS您需要重新绘制屏幕时,它会自动调用drawRect
进行下一个屏幕重绘周期。帮自己一个忙,阅读背景here。
现在这样做只意味着绘图永远不会出现在屏幕上。