【发布时间】:2010-12-29 17:10:29
【问题描述】:
我有一个 iPad 应用程序,它的可拖动 UIViews 包含在一个较大的父 UIView 中(我将其称为主视图)。该应用程序的功能之一是能够在两个视图之间拖动以连接它们。拖动时,我在 CALayer 中渲染一条线,该线植根于您开始拖动的视图并在用户手指上结束。如果用户在另一个视图上结束拖动,它们就会被附加。
当附加视图时,它们之间会永久画一条线。
所以在当前的实现中有两个 CALayer,它们是主视图的子层。一种是linkLayer,它渲染视图之间的现有链接。另一个是 linkLineLayer,它通过拖动操作呈现用户当前正在绘制的线条。
当发生拖动并出现新的拖动事件时,我调用 [linkLineLayer setNeedsDisplay]。 同样,当用户拖动视图时,我调用 [linkLayer setNeedsDisplay]。
实际设备上的性能很糟糕,所以我猜这不是要走的路。有什么替代方法可以在视图(或视图中的点)之间画线,这样我可以在拖动视图或在视图之间拖动线时经常更新它们,而不会破坏帧速率和锤击设备 cpu?
更新
所以昨晚我进去做了两个修复,产生了巨大的变化:
1.)所有链接线都是它们自己的层。当一个视图被拖动时,我只刷新与该特定视图关联的链接线。
2.) 将“拖动线”更新为一个层,其大小限制为正在渲染的线的大小。我在用户手指移动时调整图层边界。
【问题讨论】:
标签: performance ipad ios core-animation calayer