【发布时间】:2010-01-08 16:12:16
【问题描述】:
我遇到了性能问题。
我创建了一个 UIView 并覆盖了它的 drawRect 函数。在这个函数中,我正在绘制一个图像(大的),然后在整个屏幕上绘制一个白色方块,里面有一个多边形,带有 CGContextEOFillPath。结果是一个白色屏幕,其中显示了图像的一部分(由多边形定义)。
之后,我创建了一个函数来动画该多边形到另一个多边形的过渡。除了多边形动画,图像也应该被缩放和移动以固定在屏幕上的显示。我用 NSTimer 做到了这一点。多边形的动画包括计算每个顶点之间的距离,然后根据 elapsedTime 移动到一个位置。它在模拟器上运行良好,但在设备上却卡住了。
阅读有关性能的信息,在 stackoverflow 上,我找到了使用 beginAnimations 和 commitAnimations 的替代方法。我正在更改所有内容以使用该方法处理图像。但是我能用多边形做什么。多边形是用CGContextMoveToPoint和CGContextAddLineToPoint绘制的,所以我相信它不能用beginAnimations动画。我正确吗?有没有更好的方法来做到这一点?
想要的结果类似于这个漫画阅读器应用程序:http://www.comixology.com/iphoneapp(点击导览。在视频中间他们显示“自动遮罩”功能)
【问题讨论】: