问题标签 [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 投票
3 回答
1758 浏览

iphone - 如何使用 Core Animation 在我自己的类上随时间插入属性值?

具体来说,我希望将 CA 用于除

  • 整数和双精度数
  • CGRect、CGPoint、CGSize 和 CGAffineTransform 结构
  • CATransform3D 数据结构
  • CGColor 和 CGI​​mage 参考

在 CALayers 或 NSViews 以外的对象中

0 投票
2 回答
602 浏览

cocoa - 如何在调用 resizeSubviewsWithOldSize 期间触发动画代理上的核心动画?

我有一些 NSView,我根据窗口的大小将它们放入两种布局之一。

当相关的 superview 收到 resizeSubviewsWithOldSize 方法时,我正在调整布局。

这行得通,但我想动画变化。所以很自然地,我在设置新帧时尝试调用动画代理,但是当用户仍在拖动时动画不会运行。如果我在动画计划完成之前释放鼠标,我可以看到动画的结尾,但在那之前什么都看不到。我尝试确保将 kCATransactionDisableActions 设置为 NO,但这并没有帮助。

是否可以开始一个新动画并在调整大小期间实际运行它?

0 投票
5 回答
2102 浏览

iphone - 在按钮上滚动溢出文本的简单方法?

有没有人有任何示例或资源,我可以在其中找到有关滚动文本的信息,这些信息太长而无法在按钮控件中显示?我正在考虑这些方面的事情。

  • 显示尽可能多的文本以适合当前矩形,并在末尾带有“...”以表示溢出。
  • 暂停 1 秒钟,然后将文本慢慢滚动到显示字符串右侧部分的右边缘。
  • 显示尽可能多的文本以适合当前矩形,并在开头使用“...”表示溢出。
  • 将整个事情反过来重新开始。

有没有一种简单的方法可以使用特定移动设备上的“核心”或内置“动画”框架来做到这一点?

[编辑] 我想添加更多细节,因为我认为人们更关注我想要完成的事情是否合适。该按钮用于问答游戏的答案。它不执行任何特定的 UI 功能,但用于显示答案。Apple 自己在 iPod Nano 上的 iQuiz 琐事游戏中这样做了,我认为它是一个非常优雅的解决方案,可以解决比我的按钮宽度更长的答案。

万一它的'......'那是这个的困难部分。可以说我删除了这个要求。我可以让按钮的标签全尺寸,但剪辑到按钮的客户端矩形并使用一些动画方法在剪辑矩形内滚动它吗?这会给我几乎相同的效果减去椭圆。

0 投票
2 回答
2881 浏览

iphone - 在 2D 场景中创建“放大镜”的最佳方式是什么?

我正在开发一款游戏,我需要让玩家通过镜头(例如,放大镜)观察飞机(例如,墙壁)。游戏是在 iPhone 上运行的,所以我的选择是 Core Animation 或 OpenGL ES。

我的第一个想法(我还没有尝试过)是使用 Core Animation 来做到这一点。

  1. 使用 CALayers 在其上创建墙和对象。
  2. 使用 CALayer 的renderInContext:方法创建墙壁的图像作为背景层。
  3. 将图像裁剪为镜头形状,按比例放大,然后将其绘制在背景上。
  4. 在上面画上镜框和“闪亮玻璃”层。

笔记:

  • 我比 OpenGL 更熟悉 Core Animation,所以也许有更好的方法来使用 OpenGL 来做到这一点。(请告诉我!)
  • 如果我使用未附加到视图的 CALayers,我是否必须自己管理所有动画?还是有一种简单的方法可以手动运行它们?
  • 3D视角不重要;我只是放大一面平坦的墙壁。
  • 我担心执行上述所有操作对于流畅的动画来说太慢了。

在我提交大量代码来编写此代码之前,我的问题是您是否看到上述计划中的任何陷阱,或者您能否推荐一种更简单的方法来做到这一点?

0 投票
4 回答
4941 浏览

iphone - 核心动画围绕任意点旋转图层

如何使用 Core Animation 围绕任意点旋转图层?(在我的情况下,一个点不在我要旋转的图层内)

我更喜欢在不更改锚点的情况下执行此操作,因为除非每次更改锚点时都出错,否则它也会更改图层的位置。

我尝试了类似的方法,但没有奏效:

看起来旋转轴在旋转过程中正在移动。

0 投票
5 回答
21856 浏览

ios - 如何立即移动 CALayer(无动画)

我正在尝试CALayer在 iOS 应用程序中拖动 a 。

一旦我改变它的位置属性,它就会尝试动画到新的位置并在整个地方闪烁:

我怎样才能CALayers立即移动?我似乎无法理解 Core Animation API。

0 投票
6 回答
12564 浏览

iphone - 动画后,视图位置重置

我正在尝试从上到下制作视图幻灯片。这没什么大不了的,我用CABasicAnimation这个。问题是当我想删除视图时。我用这个动画。

完美地为视图设置动画。但是,动画结束后,我的视图又出现了。所以我添加了这一行:

这会删除视图,但没有动画。所以我决定将删除代码添加到这个委托:

所以现在,动画起作用了,视图消失了,但有时,我可以看到视图出现和消失的速度更快,就像动画之后,视图出现,然后animationDidStop调用委托,视图消失,显然这很糟糕。我究竟做错了什么?

0 投票
2 回答
1649 浏览

objective-c - 如何在核心动画中为 onOrderOut 使用自定义动画?

Core Animation 允许通过在基于 CALayer 的类中实现 actionForKey 方法来自定义动画:

然后我可以创建一个动画并将其返回给onOrderIn动作(即当图层添加到另一个图层时)。这工作得很好。如果我对onOrderOut(即图层从其超层中删除)执行相同操作,则返回的动画将被忽略,而是应用默认动画。

我的目标是放大 ( onOrderIn) 和缩小 ( onOrderOut) 图层:

放大作品,缩小作品。而是使用默认的淡出动画。

代码可能包含一些拼写错误,因为我是在另一台机器上输入的。

任何人都可以帮忙吗?

0 投票
1 回答
1388 浏览

iphone - 定时器和动画事件胜过 TouchesEnded 事件

我已经使用我首先在 TouchesBegan 重载中设置的 NSTimer 实现了一个长按处理程序。

但是,我真正想要的是在按住触摸的同时连续快速执行一个动作。因此,在计时器到期时,我调用一个处理程序来完成这项工作,然后它设置另一个计时器并继续循环,直到 TouchesEnded 进入并取消它,或者满足另一个终止条件。

这工作正常,直到我的处理程序代码触发动画同时消失。现在我们有了动画事件和计时器事件,我们还需要处理 TouchesEnded。

我发现,如果触发了动画,并且我将计时器设置为小于 0.025 秒,我的 TouchesEnded 事件直到计时器周期停止(另一个终止条件)才会发生。设置一个较慢的计时器,或者不触发动画,让它工作(TouchedEnded 立即出现),但不是我想要的。

显然,这一切都在设备上(发布版本 - 没有 NSLogs) - 在 sim 中一切正常

有没有办法设置这些事件的相对优先级 - 或者我可能在这里遗漏了其他明显的东西?

在这种情况下,我通过在没有视觉反馈的情况下完成连续部分来解决这个问题(从这个用户的角度来看是即时的)。我认为目前还可以。我仍然希望听到更多关于此的想法(Jeffrey 的想法很好),但我现在不会坐立不安。

0 投票
1 回答
1427 浏览

objective-c - 图层支持的视图和闪烁控件

我有一个包含 NSBox 控件的窗口。在那个 NSBox 中还有其他几个控件,(弹出窗口、文本字段等......)

我在同一个 NIB 文件中有另外两个 NSBox,它们充满了我想在某些条件下与第一个交换的控件。我希望这会发生一个很好的交叉淡入淡出效果,所以我做了以下事情:

在 NSWindowController 的-awakeFromNib方法中:

在我切换视图的方法中,我使用以下代码:

这工作得很好,正如我所期望的那样,观点交叉淡化。问题是视图上的控件有时会无缘无故地消失。它并不总是相同的视图(尽管 NSPopUpButtons 似乎特别容易出现这种情况),并且它们通常在它们具有焦点时重新出现。

我是否必须同时支持所有控件层?


更新:在显式分组中包装动画没有任何区别。在 Nib 文件中打开 setWantsLayer 也没有什么不同,但有趣的是,当我这样做时,NSPopupbuttons 会消失,直到单击它们的包含视图。在 NSPopupbuttons 上手动设置图层也没有什么不同。

似乎其他人遇到了这个问题,但我找不到任何发布的解决方案:

http://www.cocoabuilder.com/archive/message/cocoa/2008/3/30/202691 http://www.cocoabuilder.com/archive/message/cocoa/2008/4/25/205134