绘制速度不够快,无法跟上 TouchMoved 的速度?

2024-01-10

我正在尝试在我的 iPhone 应用程序中实现简单的绘画功能。我尝试用位图画笔更新位图,我也尝试过本教程 http://www.ipodtouchfans.com/forums/showthread.php?t=132024.

尽管代码几乎完全不同,但这两种方法都有相同的问题。它只发生在设备上 - 模拟器工作正常。

当我触摸屏幕并移动手指时,屏幕不会更新。当我暂停或抬起手指时,屏幕就会更新。这不是一个很好的用户体验!

我尝试直接从touchesMoved 调用drawRect,但发现绘图上下文(我使用UIGraphicsGetCurrentContext 检索)对于许多调用都是无效的,因此为每个touchesMoved 自己绘制屏幕是行不通的。

有任何想法吗?

感谢您的帮助,这真是令人沮丧!

亨宁


在我看来,您没有给主运行循环机会更新显示。您的绘图代码的执行时间可能比触摸事件之间的时间更长,因此显示永远不会更新。当您抬起手指时,它会进行更新,因为它不再为您的绘图带来负担。

您可能会考虑优化绘图以加快速度(例如,仅在屏幕的脏区域内绘图),使用 NSOperationQueue 之类的东西将绘图的繁重计算排队以在后台线程上运行,或者有选择地删除触摸绘图事件以保持您的响应顺利。

另一种可能性是将繁重的绘图代码放在单独的方法中,并通过 PerformSelector:withObject:afterDelay 调用它,延迟为 10 毫秒(或更小)。这可能会让主运行循环有机会用当前状态更新显示。我还没有测试过这个,但如果我没记错的话,我已经看到了这个工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘制速度不够快,无法跟上 TouchMoved 的速度? 的相关文章

  • 如何以编程方式将传入的 iPhone 短信静音?

    我目前正在尝试使用AVSystemController根据用户的选择来静音系统噪音的私有框架 我目前正在通过以下方式将电话静音 AVSystemController object setVolumeTo 0 0 forCategory Ri
  • 使用线程安全单例初始化代码时代码执行停止

    为了利用全局变量和方法 我实现了 Singleton 作为一种健康的编码实践 我跟着苹果文档 http www johnwordsworth com 2010 04 iphone code snippet the singleton pat
  • font-family 未应用于移动设备

    我的 font family 属性有问题css 我有一个标题 我想使用特定字体设置样式 我在用 fontface 在我的桌面上它工作正常 但在iPhone and iPad我得到了一些标准字体 我认为可能是次 但我不确定 我做了一些研究并尝
  • iPhone - UIWebView 多重锁定

    我在调试器控制台中收到以下错误消息 bool WebTryThreadLock bool 0x7400460 Multiple locks on web thread not allowed Please file a bug Crashi
  • iPhone应用程序崩溃错误访问异常DataDetectorsCore processToken

    我的 iPhone 应用程序在客户端设备上的 ios 7 0 iphone 5s 上崩溃 我无法弄清楚它出了什么问题 我正在使用 crashlytics 进行崩溃报告 Crashlytics 报告由于线程 9 DataDetectorsCo
  • 我如何知道网页视图已加载完成

    我有网络视图 因为我正在加载pdf文件 pdf 文件大小为 2 mb 因此需要时间 我想添加指标 为此 我如何知道我的文件已加载到网络视图中 UIWebView 委托 http developer apple com library ios
  • 如何在 iBooks 上搜索桌面 UI

    我想像 iBooks 中那样显示 tableview 的搜索栏 我如何减少搜索栏的宽度以及如何在没有任何背景颜色的情况下显示它 另外 当页面显示时 如何最初隐藏搜索框 我可以想到两个选择 通过子类化 UITextfield 创建您自己的 U
  • 在 iOS 模拟器主屏幕或锁屏中设置壁纸(背景图像)

    当我正在绞尽脑汁思考某件事时 我的脑海中突然出现了这个想法 我们可以将模拟器的主屏幕背景图像设置为我们选择的图像吗 Xcode 3 2 2 模拟器 3 1 3 就是一个很好的例子 Certain versions of the simula
  • 如何在 AVAudioSession 内使用 iPhone XS 中内置的立体声(2 通道)麦克风?

    我试图从 iPhone XS 的所谓立体声后置麦克风获取两个通道 但在不同位置只能看到一个通道AVAudioSession and AVAudioSessionPortDescription与后置摄像头相关联 我尝试过使用AVAudioSe
  • 如何在 iOS 中查找蓝牙音频设备

    好的 我正在开发一个有趣的项目 该项目有一个障碍 我需要为我的 iOS 应用程序启用蓝牙音频支持 我遇到的障碍是我什至无法开始获取已连接的蓝牙音频设备的列表 即使我的 iPhone 5S 可以识别我的耳机 大约 3 4 岁的耳机 LG HB
  • 如何建立辅助NSSortDescriptor排序键?

    我已成功按排序键对数据进行排序lastName 但我想知道如何排序lastName 然后由firstName 这是我用来排序的代码lastName NSSortDescriptor sortDescriptor NSSortDescript
  • NSDictionary 上的 NSPredicate

    我试图根据字母表在表格视图中创建部分 并在这些部分下按字母顺序对我的条目进行排序 我已经收集了 bandArrayIndex 中 bandArray 每个条目的第一个字母 现在我尝试使用 NSPredicate 来计算每个字母有多少个 我正
  • 从 UIImagePickerController 相机视图推送 viewController

    我正在开发一款消息应用程序 类似于 WhatsApp 用户可以互相发送文本和图像消息 当用户想要发送图像时 他可以从相机胶卷中选择一张图像 也可以用相机拍摄一张图像 这就是我介绍的方式UIImagePickerController对于这两种
  • 打乱 NSMutableArray 而不重复并显示在 UIButton 中

    在我看来 我有 12 个按钮 一个数组包含 6 个名称 我想在其中打印数组名称UIButton标题 这是我的代码 texts NSMutableArray alloc initWithObjects 1 2 3 4 5 6 nil UIBu
  • 如何替换已弃用的方法dispatch_get_current_queue()? [复制]

    这个问题在这里已经有答案了 我正在 iOS 5 中使用 xmppframework 开发一个聊天应用程序 它工作得很好 但我将 Xcode 更新到 4 5 1 将 iOS 5 更新到 iOS 6 将 Mac OS 更新到 10 7 5 但由
  • 在横向中自动调整 UITableCells 内容的大小

    在 UITableView 中 我通过 UILabels 将内容添加到单元格中 定义最佳尺寸 与单元格宽度允许的一样大 我注意到只有tableView contentSize width是可靠的 因为cell contentView bou
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • 是否可以使用 Firebase 安排推送通知? [复制]

    这个问题在这里已经有答案了 我已经阅读了我能找到的所有文档 但仍然不知道这是否可行 如果我是用户 我可以安排特定时间的推送通知吗 Example 1 我是用户并打开应用程序 2 我允许通知并转到 pickerView 或其他任何内容 并设置
  • 加载新控制器时,iPhone 横向模式切换到纵向模式

    我的应用程序在横向模式下正确启动并且运行良好 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation interfaceOrientation if interf

随机推荐

  • python内存错误的解决方法

    如何更改此功能以使其更加高效 我不断收到 MemoryError def vectorize sequences sequences dimension 10000 results np zeros len sequences dimens
  • CppRestSDK 如何POST多部分数据

    我正在尝试将多部分数据发布到服务器 我正在从 CPR 切换到 CPPRestSDK 但我似乎找不到任何相关文档 来自心肺复苏术 https github com whoshuu cpr https github com whoshuu cp
  • “start %comspec% /c script.cmd”与“start cmd /C script.cmd”

    以下命令有什么区别 start comspec c script cmd start cmd C script cmd 我需要 script cmd 的 cmd 窗口应在 script cmd 完成时自动关闭 comspec 只是指向cmd
  • Spark:我们如何在其他会话中访问内存表。

    我是 Spark 新手 所以我想知道我们如何在其他 Spark scala shell 会话中访问内存表 提前致谢 所以目前不支持 如果您想在作业之间共享 RDD 您应该查看 IBM 的 Spark Kernel 项目或 Ooyola Sp
  • 企业的 MVC 领域 - 好还是坏? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当您有很多控制器时 在单个项目解决方案中引入区域确实可以改善分离 并允许轻松地将模块复制到解决方案中或从解决方案中复制出来 然而 在大型企业解决
  • 使用 Fluent API 请求进行代理身份验证?

    我目前正在使用带有代理信息的获取请求 String result1 Request Get http somehost version HttpVersion HTTP 1 1 connectTimeout 1000 socketTimeo
  • 无法使用ofstream将汉字写入文本文件

    我在用着std wofstream在文本文件中写入字符 我的字符可以包含来自不同语言 英语到中文 的字符 我想打印我的vector
  • 如何在 UIPickerView 中添加部分标题?

    这绝不是一个需要的事情 如果可以的话那就太好了 我不确定这是否可以做到 我有一个UIPickerView它将有 41 42 个选项 现在我按字母顺序列出了所有选项 我希望将它们分成几组 并且在每组之前我希望它有一个标题 与 TableVie
  • 如何手动将文档添加到 Firestore 数据库中的集合?

    I have a quite simple database in Firestore geographic name lat and Lon The database is very static and I only need to a
  • 传单多色折线

    Leaflet 中是否有一个选项可以制作一条具有不同路径颜色的折线 在谷歌中 您可以使用具有颜色属性的路径对象 但是我在传单中没有找到类似的选项 有一些图书馆像https github com Oliv leaflet polycolor
  • 如何检查列表列表的元素是否匹配条件?

    我有一个列表列表 pairs lt list list Name A Value 11 list Name B Value 17 list Name C Value 23 我该如何检查pairs列表包含一个名称 A 的元素 我也想得到这个元
  • Node.js:如何在查询聚合中返回对象?

    我需要使用以下方法计算集合中指定字段的总和group by 所以 我使用了聚合函数 我的愿望是函数应该只返回对象 当我使用aggregate 它返回Array of Objects 但我的查询是返回对象数组 不是单个对象 例如 到目前为止我
  • 设置目录可见性隐藏 woo-commerce

    如何以编程方式设置隐藏在 woo commerce WordPress 中的目录可见性 就像这里提到的 https docs woothemes com document catalog visibility options https d
  • 来自不同控件的 WPF 触发器

    我正在尝试根据包含的文本框的焦点属性更改包含边框的背景颜色 有人可以解释我的代码有什么问题吗
  • 为什么 Python 中 `object() > 0` 为 True?

    In 32 object gt 0 Out 32 True 事实上 它比我尝试过的任何整数都大 因为 Python 2 x 试图在不同类型的对象之间进行可用的比较 即使它们没有意义 它已在 Python 3 上修复 gt gt gt obj
  • 基于 Boost.ASIO 的 HTTP 客户端库(如 libcurl)[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个现代的 C HTTP 库 因为 libcurl 的缺点很难通过 C 包装器来解决 基于
  • 在SoapUI免费版中创建脚本库

    我是 SoapUI 和 groovy 脚本编写的新手 我想创建一个 groovy 脚本存储库 可以在各种测试步骤中重用 我正在使用 SoapUI 免费版本 以下是我的 SoapUI 项目的结构 Project TestSuite TestC
  • 如何从 3 维 sympy 表达式获得快速 lambda 函数?

    我正在使用 sympy 为 cfd 模拟生成不同的表达式 大多数这些表达式都是 exp f x y z 类型 例如 f x y z sin x cos y sin z 为了获取网格上的值 我使用 simpy lambdify 例如 impo
  • 在芹菜中的多个队列中确定队列的优先级?

    我们使用 celery 来执行异步后台任务 并且有 2 个队列用于不同优先级的任务 我们有 2 个节点集群分别为它们提供服务 事情进展顺利 正如预期的那样 问题 我们得到的大多是低优先级的任务 为了优化资源利用率 我想知道是否有一种方法可以
  • 绘制速度不够快,无法跟上 TouchMoved 的速度?

    我正在尝试在我的 iPhone 应用程序中实现简单的绘画功能 我尝试用位图画笔更新位图 我也尝试过本教程 http www ipodtouchfans com forums showthread php t 132024 尽管代码几乎完全不