问题标签 [core-animation]

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 投票
4 回答
2501 浏览

iphone - iPhone 上的大多数游戏都是用 OpenGL ES 完成的吗?

我只是想知道 iPhone 上的大多数游戏是否都是在 OpenGL ES 中完成的,而不是使用 Quartz 和 Core Animation。Quartz 和 Core Animation 主要用于创建流畅的界面吗?或者,如果游戏中有一点可能必须使用 OpenGL 而不是使用其他工具?

0 投票
2 回答
2557 浏览

iphone - 如何在 iPhone 上优化 UIColor?

我正在创建一个由自定义滑块类型控件控制的简单颜色选择器。

我将一个浮点值从我的滑块传递到 UIColor 构造函数方法,并随着值的变化更新 CALayer 的背景颜色。

它在模拟器中运行非常流畅,但在设备上运行时会出现很多闪烁。

这仅仅是因为它对 GPU 过度征税吗?奇怪的是,当穿过蓝色时,这是最糟糕的。并且改变 alpha 值和亮度比改变饱和度和色调更容易闪烁。

我不应该在滑块值更改时传递任意浮点值吗?如果没有,我如何将其限制为更少的颜色以进行优化?

我想过禁用 CALayer 的 backgroundColor 属性的隐式动画,但我不知道该怎么做。

是否有任何优化 UIColor 更改的技巧。

更新

我没有使用 drawRect: 或 drawInRect:

我只是在更改 CALayer 的 backgroundColor 属性。每次调用 touchesMoved: 时,我都会抓取位置,创建一个 0.0 到 1.0 的浮点值,并向我的委托传递一条消息,告知该值已更改,然后调用 -(void)updateCurrentColor 方法。

这是我的实现示例:

起初我认为这是由于触摸界面的不精确造成的跳跃值。平滑功能有所帮助,但它仍然会闪烁一些,尤其是在使用 alpha 值时,即使我的位置仅改变 1 个像素。我应该将其限制为有限数量的颜色/值,而不是仅仅传入任意浮点数吗?同样,在模拟器中运行良好,似乎只是一个性能问题。

0 投票
3 回答
6313 浏览

iphone - 在 drawRect 中使用 Core Graphics 绘制图像网格:

我的问题是:我有一个简单的块图像,我想用它制作一个网格。我在 UIView 中创建了一个 CGPoints 数组。然后我用

进而

其中 TouchX 和 TouchY 是用户触摸屏幕的 CGPoints。所以我基本上在用户触摸的网格上显示不同的图像。

首先,问题是每次调用DrawRect都会重绘整个屏幕。我希望能够保存状态(通过更改 BOOL 数组?)并让用户在屏幕上拖动并更改多个图像。但是,当我在 DrawRect 之外时,我无法在 UImage 上使用“drawAtPoint”方法。(引发错误)。

无论如何,我开始研究 CoreAnimation 和 Quartz 文档,并感到非常困惑。我不确定我是否应该为每块砖创建多个 UIView(似乎过多),或者 CALayers 或 CGLayers 的网格......我认为我想做的事情很简单......但我真的不明白图层,以及使用 CALayer 和 CGLayer 的区别。显然“所有 UIView 都支持图层”这是什么意思?

我对如何实现这一点有点迷茫。我基本上想在网格中交换图像,以便用户基本上可以在屏幕上“绘画”并切换图像。


编辑

我尝试使用 [self setNeedsDisplayinRect] 来实现它,并传入用户手指下的 CGRect。但是,这仍然在 TouchesMoved 中调用 DrawRect,这给了我想要的效果,但在 iPhone 上太慢了。有没有更有效的方法来使用 CALayers 来实现相同的效果?我是 Core Animation 的新手,并不真正了解如何使用图层来解决这个问题。

0 投票
3 回答
8945 浏览

iphone - CALayer 和 CGGradientRef 抗锯齿?

我对 iPhone 的 CALayer 绘图有一个奇怪的问题。我有一个根层,它添加了一堆代表“气泡”的子层。最终结果应该是这样的:

http://www.expensivedna.com/IMG_0018.PNG http://www.expensivedna.com/IMG_0018.PNG

问题是我似乎无法使图层抗锯齿(注意气泡上的锯齿)。我为气泡 CALayer 覆盖 drawInContext 的代码如下:

}

现在真正奇怪的是,如果我稍微改变绘图代码只绘制正常的红色圆圈,如下所示:

一切似乎都可以抗锯齿:

http://www.expensivedna.com/IMG_0017.PNG http://www.expensivedna.com/IMG_0017.PNG

我似乎无法弄清楚这种看似奇怪的行为。我是否错过了抗锯齿渐变和法线圆之间的一些区别?

多谢你们。

0 投票
1 回答
5678 浏览

cocoa - 核心动画...循环动画?

为了尽可能简单地表达我的问题,有没有办法创建一个核心动画序列来一遍又一遍地重复直到停止?

具体来说,我正在制作一个自定义类,我想要一个 -start 和 -stop 方法,这将导致它脉动。为脉冲编写动画代码不是问题,而是如何使其重复?

提前感谢您的任何答案!

0 投票
1 回答
755 浏览

objective-c - 可可,在 QTMovieView 上覆盖 NSWindow 时闪烁动画

在我目前正在处理的一个项目中,我有一个透明的 NSWindow 覆盖在 QTMovieView 上。在某些时候,我将一个自定义视图滑入这个带有动​​画的子窗口,以便它在电影上显示一小段时间。唯一奇怪的行为是动画在 Mac Book Pro 上很流畅,但在 Mac Book(相同的 OS-X 版本)上却有明显的闪烁。闪烁仅发生在窗口后面有实际 QTMovie 的部分上。

有没有人见过这种行为或找到解决它的方法?

0 投票
2 回答
891 浏览

objective-c - 使用 Objective-C 编码时,您可以在运行时添加属性吗

我想知道是否可以在运行时动态地将新属性添加到 Objective-C 对象实例?

我最初的想法只是覆盖 getValueForKey 以“伪造”属性,但似乎这不适用于 CoreAnimation。我想要实现的是能够为自定义属性设置动画。如果我创建一个 CALayer 的子类并将声明的属性添加到我的子类中,我就能够让它工作。如果我尝试使用 getValueForKey/setValueForKey 策略,CoreAnimation 似乎并不关心它,它正在明确寻找声明的属性。

我希望能够动态添加属性,因为在运行之前我可能不知道要为哪个属性设置动画。我当然可以创建一个 CALayer 子类,它具有我想要动画的所有属性......但只是想知道是否有更好的方法来做到这一点......

谢谢,

彼得

0 投票
2 回答
4763 浏览

iphone - CATransaction 没有动画

我在 XCode 中创建了一个新的基于视图的应用程序。

在 ViewController 中,我修改的唯一代码如下所示:

它应该创建一个红色方块,在应用程序加载后立即动画半秒。问题是它没有动画。我不知道为什么。我创建了这个简单的项目来隔离所有变量,但它仍然不起作用。

任何人都可以帮助或指出一些核心动画阅读材料的正确方向。我已经浏览了苹果的所有东西。

0 投票
1 回答
359 浏览

cocoa - 从 IKImageBrowserView 获取 CGImageRef

我用图像文件名提供图像浏览器视图,它管理加载它们。

有没有办法在加载它们后从浏览器中检索这些图像的 CGImageRef ?当用户单击图像时,我想用它们做一些核心动画。

0 投票
2 回答
356 浏览

cocoa - Creating a quick look style zooming effect

I would like to create an effect than an image zooms up from a thumbnail size to full screen.

I am not sure what's the right steps to achieve this. Should I create a transparent full screen window and animate a layer on top of it?