【问题标题】:CAShapeLayer with CAShapeLayer sublayer slowCAShapeLayer 和 CAShapeLayer 子层慢
【发布时间】:2012-06-25 13:35:21
【问题描述】:

我有一个带有 CAShapeLayer 子层的 UIScrollView,它呈现一条简单的线条。 CAShapeLayer 子层有自己的子 CAShapeLayer。这会导致滚动和缩放变慢。层次结构是这样的:

-UIScrollViewLayer -CAShapeLayer -CAShapeLayer

如果我将层次结构更改为只有一层,我不会遇到性能问题:

-UIScrollViewLayer -CAShapeLayer -CAShapeLayer

我做错了什么?

【问题讨论】:

  • 您能否再解释一下您的问题。使用嵌套层可以防止这些层被缓存。那可能是你的问题。如需更多帮助,我需要更好地了解您的问题。

标签: iphone ios5 uikit interface-builder cashapelayer


【解决方案1】:

赛梅尔,

所以我的滚动视图控制器目前正在这样做:

[self.uiview.layer addSublayer:myCALayer];

myCaLayer 在它的 init 方法中也是这样做的:

CAShapeLayer *overlayLayer = [[CAShapeLayer alloc] init];
[self addSublayer:overlayLayer]

由于某种原因,我发现这个层次结构很慢。如果我改为展平层次结构并在我的 uiscrollview 控制器中执行此操作:

[self.uiview.layer addSublayer:myCALayer];
CAShapeLayer *overlayLayer = [[CAShapeLayer alloc] init];
[self.uiview.layer addSublayer:overlayLayer]

然后性能要好得多。希望这更有意义。

【讨论】:

  • 我在 shapelayers 上设置路径属性的另一件事是为了简单起见,我只是没有在上面显示。
  • 嗯,所以我尝试设置 layer.ShouldRasterize,因为我认为它会提高性能,但是当我查看仪表时,它看起来好像每次滚动视图滚动时都会重绘。不确定我是否正确理解了这种行为,或者我做错了什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多