我的形状不会出现

时间:2014-12-23 19:32:15

标签: ios xcode uitouch

您好我想在iOS UITouch的某个点周围绘制一个圆圈。我也想绘制在这一点上相交的十字准线,但我还没有那么远。这应该能够在最多10个触点处发生,这就是为什么你会在开始时看到for循环的原因。任何帮助将非常感激。

我列出了我的全局变量中的点,因为我在touchesBegantouchesMovedtouchesEnded中使用了它。我需要显示形状,直到启动新的触摸点。我对所有这些都相当新,而且有点压倒性的。

谢谢你的时间。

-(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]);

}

2 个答案:

答案 0 :(得分:1)

我认为问题在于您无法在此方法中使用Core Graphics。通常,drawRect的{​​{1}}方法就是您要使用它的地方。

使用UIView添加自定义UIView子类(代表您的圈子)可能更好吗?所以你对它所属的每一个问题都有所了解:当有人点击视图时会发生什么以及你绘制的对象应该是什么样子。两个问题,很好地分开。 (关注点分离至少是你的朋友,请相信我。)

答案 1 :(得分:0)

我猜你的UITouch内有UIView个方法。您不需要单独的UIView进行绘制,但必须将绘图内容移动到方法drawRect中。在setNeedsDisplay方法中调用setNeedsDisplayInRecttouchMoved方法(我在代码中缺少这些方法!),iOS将完成剩下的工作。

通过调用setNeedsDisplaysetNeedsDisplayInRect通知iOS您需要重新绘制屏幕时,它会自动调用drawRect进行下一个屏幕重绘周期。帮自己一个忙,阅读背景here

现在这样做只意味着绘图永远不会出现在屏幕上。