我想在点击屏幕的地方画一条垂直线。因为平均手指比 1 像素宽,所以我想“逐步”执行此操作。所以基本上,这条线只能每 25px 绘制一次。我想找出我可以画线的最近位置。

例如,如果手指点击距上 View 左侧 30 像素的位置,我想在距 View 左侧 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、1、2、3 等)。
  • 乘以原始间距,得到要绘制的线的实际 x 值(0、25、50、75 等)。
  • 关于ios - 在屏幕被点击的地方画一条垂直线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10636773/

    10-12 01:58