我有一個矩形視圖,其中包含以編程方式繪製的垂直細線。iOS - 如何繪製拖動時用戶觸摸的線條上的點
這是我用於繪製線的代碼:
- (void)drawLines
{
CGFloat spacing = _bgView.frame.size.width/11.0f;
for(int i = 1; i < 11; i++)
{
UIView *line = [[UIView alloc] initWithFrame:CGRectMake((CGFloat)(i * spacing), 0, 1, _bgView.frame.size.height)];
line.backgroundColor = [UIColor whiteColor];
line.tag = i;
[_bgView addSubview:line];
}
}
該線由從矩形視圖(_bgView
)的寬度計算平均分配空格分隔。
這裏是什麼樣子的概述:
當用戶在矩形視圖中拖動,當他/她的手指穿過或觸及一條線,一個點會在那個特定的點上繪製。
以下代碼檢測用戶在線上的觸摸點,並在該點上繪製一個點。
- (IBAction)drawDots:(id)sender
{
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)sender;
CGPoint pannedPoint = [pan locationInView:_bgView];
for (UIView *subview in _bgView.subviews)
{
if (CGRectContainsPoint(subview.frame, pannedPoint) && subview.tag > 0)
{
NSLog(@"Point x:%.2f y:%.2f TAG:%i", pannedPoint.x, pannedPoint.y, subview.tag);
UIView *point = [[UIView alloc] initWithFrame:CGRectMake(pannedPoint.x - 2.5, pannedPoint.y - 2.5, 5, 5)];
point.backgroundColor = [UIColor redColor];
[_bgView addSubview:point];
}
}
}
現在,如果用戶鍋真快,這將是結果:
可以看出,只有一些點繪製,這就是爲什麼有很多缺失在其他線上的點。
這應該是預期的結果:
但是,出現這種情況只有當用戶鍋超慢。
即使手指移動速度非常快,我如何在用戶觸摸時截取的線條中繪製點?
謝謝!
你可以使用委託方法,將之前調用平移手勢的動作 –
@PKT謝謝!我會試一試。 –
@PKT嗨,我只想問,你是指UIGestureRecognizerDelegate?如果是這樣,那麼我沒有看到我可以使用的任何委託方法。 –