我想制作一个项目,我必须触摸一个点并将其连接到另一个点并将其连接到另一个点。当我将一个点与另一个点连接时,它们之间会产生一条线。
实际上当我点击/触摸一个点时,该线将显示,当我触摸第二个点时,该线将在两个点之间产生。
我还没能做到这一点,我正在尝试并在网上搜索但尚未找到解决方案。
这是我的需要像https://play.google.com/store/apps/details?id=zok.android.dots&hl=en
这样我认为这是由UIGesture Recogniser完成的?或者这是别的吗?我怎么能做到这一点?
非常欢迎来自专家的任何想法或建议。
答案 0 :(得分:3)
根据您的要求修改此代码
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *currentColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextSetLineWidth(context, 2.0);
CGContextBeginPath(context);
CGContextMoveToPoint(context, touchStart.x, touchStart.y);
CGContextAddLineToPoint(context, touchEnd.x, touchEnd.y);
CGContextStrokePath(context);
@Nisha:
制作CGPoint
touchStart
和touchEnd
的gloabal实例并将其设为:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
touchEnd = CGPointZero;
touchStart = CGPointZero;
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
NSLog(@"start point >> %@",NSStringFromCGPoint(point));
touchStart = point;
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
touchEnd = point;
[self setNeedsDisplay];
}
答案 1 :(得分:1)
您可以借助CGPoint
方法将触摸的位置存储在两个不同的touchedEnded
中。
然后,当你有两个点时,你可以添加一个新的UIView作为子视图,它知道这两个CGPoint
并将在其drawRect
方法中绘制一条线。或者在当前视图中执行,方法是调用[view setNeedsDisplay]
来触发自己的drawRect方法。
查看此link。
答案 2 :(得分:1)
尝试以下步骤。
创建UIView的一个子类。在上面添加你的UIButtons。
实施Touches delgates,如touchesBegan,move,end。
Inside touchesBegan检查touch isinsideview:myButton1然后将标志设为true。
编辑:
UITouch *touch = [[UITouch alloc] init];
touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
if(CGRectContainsPoint(myButton1.frame, point))
NSLog(@"Inside myButton1");
测试子视图是否被触摸点击的另一种方式是
CGPoint pt = [[touches anyObject] locationInView:self.view];
UIView *touchedView = [self.view hitTest:pt withEvent:event];
内部触摸移动检查标志是否为true而drawline()...并继续检查内部视图中是否有触摸:myButton2。 call setNeedsDisplay。
现在,您将获得在UIView中绘制线条的方法和示例代码。只需应用上述逻辑。
答案 3 :(得分:1)
如果可以,请使用UI触摸方法获取两个按钮的坐标。您可以借助CGPoint
方法在两个不同的touchedEnded
中找到触摸的位置。要查找触摸位置文档here
在您的视图中获取UIButtons
的位置后,您可以使用此方法绘制之间的线 -
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor]CGColor]);
CGContextSetLineWidth(context, 1.0);
CGContextMoveToPoint(context, startPoint.x, startPoint.y);
CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
CGContextStrokePath(context);
CGContextRestoreGState(context);
}
希望这有帮助