gpt4 book ai didi

objective-c - 在 iPhone 上用手指画直线

转载 作者:搜寻专家 更新时间:2023-10-30 19:44:44 25 4
gpt4 key购买 nike

背景:我正在尝试创建一个非常简单的 iPhone 应用程序,允许用户用手指在屏幕上绘制多条直线。

我在我的 UIViewController 中使用这两种方法来捕获每条线端点的坐标。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

问题:我希望该行在 touchesEnded 触发后立即显示,然后继续在屏幕上绘制更多行。我该怎么做呢?我不一定需要代码,但我需要有关如何将其组合在一起的总体思路的帮助。另外,我不是 xibs 的 super 粉丝,如果这会影响答案,我喜欢以编程方式做所有事情。

我试过什么:我试过使用 Quartz 2d,但似乎要使用它,您必须在 drawRect 方法中进行绘图一个单独的子类 View 。所以我必须为每一行创建一个新 View ?然后我的坐标会被弄乱 b/c 我必须将 touches 位置从 UIViewController 转换到 View 。

我也尝试过使用 OpenGL,我已经取得了更多的成功(使用 GLPaint sample 作为模板)但是 OpenGL 似乎只是在屏幕上绘制一些直线有点过分了。

最佳答案

您不需要多个 View ,也不需要 OpenGL。

创建 UIView 的子类——将其命名为 CanvasView

创建一个对象来表示 Canvas 中的“一条线”——它将是 NSObject 的子类,具有用于开始和结束的 CGPoint 属性。

CanvasView 应保留 Canvas 中线条的数组。

-[CanvasView drawRect:]中,循环遍历数组中的线条,并绘制每一行。

-[CanvasView touchesBegan:withEvent:] 中,将起点存储在实例变量中。在 -[CanvasView touchesEnded:withEvent:] 中,用起点和终点新建一行,并将其添加到您的行数组中。调用 [self setNeedsDisplay] 以重绘 View 。

关于objective-c - 在 iPhone 上用手指画直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765039/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com