我想在点击屏幕的地方画一条垂直线.因为平均手指宽度超过1像素宽,我想“分步”做到这一点.所以基本上,这条线只能每25px绘制一次.而且我想弄清楚我可以画线的最近位置.
例如,如果手指从我的上方视图的左侧开始30像素,我想从视图的左侧绘制一个25像素的垂直线.如果屏幕从左边40个像素点击,我想要从左侧绘制50个像素的线. (所以每25个像素只能有一行,我想绘制最近的一行.
知道我怎么能这样做吗?
画线很容易:
UIView *lineView = [[UIView alloc] initWithFrame:CGRectMake(100.0,0.0,1,320.0)]; lineView.backgroundColor = [UIColor whiteColor]; [parentView addSubview:lineView];
但我不知道如何找到用户点击屏幕的位置.
解决方法
要选择与25点边界对齐的最近垂直线,请使用此值计算正确的x值:
CGFloat spacing = 25.0f; NSInteger lineNumber = (NSInteger)((touchPoint.x + (spacing / 2.0f)) / spacing); CGFloat snapX = spacing * lineNumber;
以下是上面代码中发生的情况:
>将一半间距值添加到触摸点上 – 这是因为下一步中的“捕捉”过程总是会找到前一行,因此通过添加间距值的一半,我们确保它会“捕捉”到最近的行.>通过除以间距计算行号,并将值转换为整数.这会截断结果的小数部分,因此我们现在有整数行号(0,2,3等).>乘以原始间距以获得要绘制的线的实际x值(0,25,50,75等).