gpt4 book ai didi

ios - 在 iOS 上,可以在不在 drawRect 中完成的情况下绘制某些东西吗?

转载 作者:行者123 更新时间:2023-11-28 22:59:16 24 4
gpt4 key购买 nike

例如,对于一个 iOS 应用程序,如果用户在屏幕上滑动手指,则会记录 50,000 个点。如果在 drawRect 中对所有这些点都进行了绘制,那么下次用户触摸第 50,001 个点时,在 touchesMoved 的末尾显示以下行

[self.view setNeedsDisplay];

将导致 drawRect 再次运行并再次绘制所有 50,001 个点。因此,对于每 1 个新点(对于手指的任何新移动),所有 50,001 个点都需要重新绘制,这不是一种有效的方法。

我尝试只在 drawRect 中绘制最后一个点,它不会“添加到”现有 View ,而是“删除所有内容”然后绘制一个点。

有没有办法

1) 在不需要调用 drawRect 的情况下绘制 1 个额外的点?
2) 或者,drawRect 是否可以在不首先删除整个屏幕的情况下多画一个点?

最佳答案

一种方法是在触摸结束时渲染到图像中,然后在生成更多路径时继续添加到图像中。如果需要,您可以将路径存储在数组中,并撤消缓冲区或以其他方式需要重新生成绘图。

(显然你需要比这更多的代码)

 UIGraphicsBeginImageContextWithOptions(size, NO, 1.0);
CGContextRef context = UIGraphicsGetCurrentContext();
// do some drawing
UIImage * image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

哦 - 首先,我发现 setNeedsDisplayInRect: 在 iOS5 中很奇怪/有问题。第一次调用它是全 View 矩形,而不是作为参数传入的矩形。至少那是我在尝试使用它时发现的。也许我忽略了一些实现细节。

关于ios - 在 iOS 上,可以在不在 drawRect 中完成的情况下绘制某些东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10257347/

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