我正在尝试在我的 iPhone 应用程序中实现简单的绘画功能。我尝试用位图画笔更新位图,我也尝试过本教程 http://www.ipodtouchfans.com/forums/showthread.php?t=132024.
尽管代码几乎完全不同,但这两种方法都有相同的问题。它只发生在设备上 - 模拟器工作正常。
当我触摸屏幕并移动手指时,屏幕不会更新。当我暂停或抬起手指时,屏幕就会更新。这不是一个很好的用户体验!
我尝试直接从touchesMoved 调用drawRect,但发现绘图上下文(我使用UIGraphicsGetCurrentContext 检索)对于许多调用都是无效的,因此为每个touchesMoved 自己绘制屏幕是行不通的。
有任何想法吗?
感谢您的帮助,这真是令人沮丧!
亨宁
在我看来,您没有给主运行循环机会更新显示。您的绘图代码的执行时间可能比触摸事件之间的时间更长,因此显示永远不会更新。当您抬起手指时,它会进行更新,因为它不再为您的绘图带来负担。
您可能会考虑优化绘图以加快速度(例如,仅在屏幕的脏区域内绘图),使用 NSOperationQueue 之类的东西将绘图的繁重计算排队以在后台线程上运行,或者有选择地删除触摸绘图事件以保持您的响应顺利。
另一种可能性是将繁重的绘图代码放在单独的方法中,并通过 PerformSelector:withObject:afterDelay 调用它,延迟为 10 毫秒(或更小)。这可能会让主运行循环有机会用当前状态更新显示。我还没有测试过这个,但如果我没记错的话,我已经看到了这个工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)