问题标签 [calayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
14505 浏览

iphone - Drawing woes with CALayer

First of all, im finding the iPhone online docs to be not-so-very thoroughly clear when it comes to the various ways of rendering a layer. I get the jist of it, but im not clear when to use which methods and which requires the layer to be added as a sub layer or not.

My project started off trivially with me loading images and simply drawing them to a UIView via [image drawAtPoint:] as well as [image drawInRect:]. These work fine using the current graphics context.

Then today i happened to read this concept of using layers so that animating my various images (implicitly) would in theory be a breeze!

For the record, i know the docs say subclassing CALayer is unecessary, but i did just that. Now I am incredibly confused about the different ways to supposedly render a layer.

  • drawLayer
  • displayLayer
  • display
  • drawInContext

Now for all of these methods, is it required to set the layer's frame size? Is it required to add a layer to a view's layer?

The only method that gives me visible results is the drawinContext method. But if i apply an implicit animation (e.g. image.opacity = 0) nothing happens, which makes me believe my layer is not properly set up.

Some one please bring order back to this chaos.

0 投票
1 回答
1998 浏览

cocoa - 如何旋转 CALayer 支持的 NSView 子类

我有一个自定义 NSView 子类,我想用 Core Animation 制作动画。我已经(没有 CA)使用 NSView 的 setFrameOrigin 和 setFrameRotation 方法设置这些视图的位置和旋转。但是,无论我做什么,一旦我为视图添加了一个支持层,我就无法让它们旋转。

我试过使用 NSView 的 setFrameRotation 和 setFrameCenterRotation 方法。后者稍微移动视图,但不旋转其内容。前者没有效果。将由 CATransform3DRotate 创建的 CATransform3D 应用到视图层也没有效果。

问这个问题我感觉有点傻,因为这看起来应该很容易,但对于我的生活,我无法弄清楚如何让它发挥作用。有人,请让我拍拍我的额头,看看它是多么容易。:)

0 投票
2 回答
1641 浏览

core-animation - CALayer 显式动画行为不正常

隐含地,事情表现得很好。但是当我尝试使用显式动画在单个图层上执行多个动画(例如不透明度和翻译)时,我得到了奇怪的结果。

首先,我尝试使用 CATransaction。然后我切换到 CAAnimationGroup。两者似乎都没有得到我想要的。

我想要什么?我想要的只是让一个图层从一个点移动到另一个点,并具有初始不透明度和目标不透明度。就是这样!

我在看什么?这是一个例子...

执行事务开始/提交时,翻译似乎是正确的,但不透明度不是。我的起始不透明度为 0,目标不透明度为 0.5。然而,当我运行动画时,它混合到 0.5,但随后“捕捉”到 1.0(完全不透明)。

我尝试将 removedOnCompletion 设置为 NO。但这也无济于事。我认为底线是我需要知道 AnimationGroup 和 Transaction 之间的区别。

任何人都可以解释这一点,以及我看到的关于我的动画的奇怪之处吗?

谢谢!

0 投票
1 回答
185 浏览

iphone - 大小为 16 字节的泄漏 UIImage 可能表明什么?

16 字节很小,对吧?我在我的应用程序中创建的 UIImage 都没有那么小,但是 Leaks Instrument 报告了一个大小为 16 字节的泄漏 UIimage...关于这可能是什么的任何线索?顺便说一句,还有一个泄露的 48 字节的 CALayer 对象......

0 投票
2 回答
3274 浏览

iphone - 移动时禁用 CALayer 内容的重绘(iphone)

我有一个带有大量 CALayers (~1000) 的 UIView,每个都有一个小图像作为其内容。这个 UIView 是一个滚动视图的子视图(实际上它是另一个视图的子视图,它是滚动视图的子视图)。这在开始时相对较快(几秒钟)。但是,当我在滚动视图中滚动时,帧速率非常低。

每次滚动时是否都试图重绘每个 CALayer 的内容?有没有办法禁用它?有其他事情发生吗?

注意:我在 UIView 中将 clearsContextBeforeDrawing 设置为 NOo,这有所帮助,但仍然比我预期的要慢得多

0 投票
3 回答
26388 浏览

iphone - 使用 CABasicAnimation 旋转 CALayer 后,图层跳回未旋转的位置

我正在尝试创建一个落下的硬币。硬币图像是一个带有 2 个 CABasicAnimations 的 CALayer - 一个跌落和一个旋转。当跌落动画结束时,它会停留在那里。不过,旋转动画应该是随机的,并且每次都以不同的角度结束,但它只是弹回原始的 CALAyer 图像。

我希望它保持在完成动画的角度。是否可以?我该怎么做?

代码:

0 投票
1 回答
2638 浏览

cocoa - 如何更新我的 CALayer 上的约束?

我有一个 CATextLayer,我希望能够在我的视图中垂直对齐。我可以设置一个约束,使其与视图的顶部、中间或底部对齐;但我希望能够允许用户即时更改它。当我设置我的 CATextLayer 时,我使用这个约束在中间对齐它:

这很好用,但如果我想更新图层以将其与视图顶部对齐,我尝试:

当我添加新约束时,它不会与顶部对齐,而是越过视图的顶部,您只能看到它的一部分。看起来它正在尝试应用这两个约束。没有 removeConstraint 并且如果我在我的类上定义一个 CAConstraint 变量并在将其添加到 CATextLayer 后更新该变量,似乎也会发生同样的事情。我每次都需要重新创建 CATextLayer 吗?

0 投票
1 回答
907 浏览

iphone - 重新排序子层没有影响

我有一个 UIView 子类,它实例化其层的三个同级子层。其中两个子图层的内容设置为图像文件;第三个有一个图形绘制在

方法。问题是我的绘图层总是出现在图像层的后面。我尝试重新排序子图层数组并更改子图层的 zPosition 属性无济于事。我错过了什么?

和 drawLayerInContext 方法:

0 投票
2 回答
437 浏览

iphone - 在 CALayer 上过度使用隐藏是否会产生成本?

想知道是否有人可能知道这个问题的答案 - 是否存在与过度隐藏图层相关的成本。

例如,如果一个层已经隐藏,那么一遍又一遍地调用 layer.hidden = YES 是否比简单地通过调用堆栈有更多的开销?Cocoa 是否足够聪明,可以知道该层已被隐藏?

或者我是否需要始终检查图层可见性是否已更改然后调用隐藏?

第一个模式允许关闭条件语句,这会导致更好的编码实践,但确实会导致额外的堆栈调用,而第二个模式更明确,但会导致条件语句失败。

谢谢,布莱恩

0 投票
1 回答
524 浏览

iphone - 我应该用更多的 UIView 还是更多的 CALayer 组成一个复杂的 UIView?

我有一个复杂的视图,它由一个基础图像和其他图像和 2D 路径组成。

我想知道如果通过为每个元素创建不同的 UIView 并将它们添加为复杂视图的子元素来组装复杂视图,或者我是否应该为每个元素创建不同的 CALayer 并将它们添加为复杂视图的子元素,将会有什么不同视图的图层属性。

谢谢

tat0