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

iphone - 如何在 iPhone 上显示进度指示器覆盖/HUD?

我想在浮动在表格视图上的半透明框中显示进度指示器。换句话说,当下载表格内容时,我希望在它上面出现一个“更新”标签。

我已经在商店的几个应用程序中看到了这一点,特别是 Facebook(当你摇动重新加载时)和 Darkslide。

我的第一个冲动是创建一个半透明的 UIView,在其中放置一个 UILabel 和一个 UIProgressIndicatorView,并将其添加到视图层次结构中......但是在哪里? UIView 可能不会与它的兄弟姐妹重叠,所以我不能让它成为窗口的子视图。 我也不能让它成为表格的子视图,因为它会随着表格内容上下滚动。

我想过创建一个新的 UIWindow,但文档基本上说不要

我知道 CALayer 可以相互重叠,所以这是一个选择,但我不能在 CALayer 中放置进度指示器,可以吗?我应该滚动自己的进度指示器来动画 CALayer 而不是 UIView?

我对了解私有 API不感兴趣。

编辑:这个问题是基于一个错误的假设。NSViews(在 Mac OS X 上)可能不会重叠,但 iPhone 上的 UIViews 可能。

0 投票
2 回答
2549 浏览

iphone - 如何防止 Core Animation 阻塞我的主线程?

我知道 Core Animation 在单独的线程中调度其动画,如文档中所述。尽管如此,我的动画似乎阻塞了我的主线程。所有动画开始和结束。(无论是否将 kCATransactionDisableActions 设置为 true。)但会变得跳跃并且主运行循环停止。

我究竟做错了什么?

概念示例:

0 投票
1 回答
2333 浏览

iphone - 在视图可见后添加时 CALayer 不渲染

我可能只是错过了一些非常简单的东西,但是每当我在视图可见后添加 CALayers 时,它们都不会渲染。这是我正在使用的代码:

我也尝试过重用相同的图层并将内容设置为不同的 CGImage(通过 setContents:),这也会导致图层停止渲染(更具体地说,它的动画效果就好像不透明度已设置为 0 以为它仍然是 1 )。我已经通过枚举视图层的子层验证了这些层实际上是在视图的层树中。他们似乎有正确的图像并且在正确的位置,他们只是不画画。任何帮助将不胜感激。

0 投票
1 回答
3824 浏览

cocoa - 翻转NSViews层(CALayer)的坐标

我在 awakeFromNib 中做到了这一点:

有一个“添加:”动作

我希望从superLayer(视图的CALayer)的左上角添加子层,但它们是从左下角添加的

我试过仿射变换

但滚动使我的子层消失

我用了变换

我必须应用变换来反旋转 subLayers,在添加大约 100 个子图层后,滚动变慢并且应用程序变得无响应

如果我不应用任何变换(无仿射或无变换),那么即使在添加 1000 个子层后应用程序也很快

我的应用程序必须托管大量不同大小的层。帮助我如何使托管层采用翻转坐标...

0 投票
2 回答
1544 浏览

cocoa - 删除/添加 CALayers 以进行 GPU 优化

我有一个支持图层的视图,我正在尝试添加大约 300 X 270(以像素为单位)大小的子图层。

子层的数量可能会达到 1000 到 2000 个,更不用说每个子层都可以再次扩展到大约 4280 X 1500 或更多。

所以问题显然是GPU约束的问题。

添加大约 100 个大小为 300 X 270 的子图层后,会出现一个警告image is too large for GPU, ignoring,这会干扰图层显示。

这种问题的解决方案(来自一些邮件列表)是使用,但由于子图层显示的复杂要求,CATiledLayer我无法使用。tiledLayer

是否有可能删除不属于VisibleRect视图的子层?

我尝试removeFromSuperlayer添加它,然后在需要时添加它,当我尝试添加 subLayer 时总是会崩溃。

我怎样才能做到这一点?

我添加了两次子层(我需要更改它)但现在只是为了代码的要点:

0 投票
1 回答
14511 浏览

iphone - 使用动画从 SuperView 中删除 UIVIew

我可以为我的应用添加 UIView 动画,它看起来非常漂亮,所以谢谢苹果。

但是,如何为从超级视图中删除此视图设置动画?

我正在使用:

动画“in”过渡......你如何动画“out”过渡????

0 投票
8 回答
213754 浏览

iphone - iPhone UIView 动画最佳实践

在 iPhone 上动画视图转换的最佳实践是什么?

例如,ViewTransitionsapple 的示例项目使用如下代码:

但也有一些代码片段漂浮在网上,看起来像这样:

最好的方法是什么?如果您也可以提供一个片段,那将不胜感激。

注意:我无法让第二种方法正常工作。

0 投票
2 回答
616 浏览

cocoa-touch - UIImageViews - 层

我有 2 个 UIImageViews, IMG1 和 IMG2 。有些人我希望 IMG1 出现在 IMG2 上方,而在其他时候我希望 IMG2 出现在 IMG1 上方。我该怎么做呢 ?

0 投票
4 回答
13625 浏览

iphone - 在 iPhone 的 Quartz 2D 中进行旋转变换时,我可以移动原点吗?

抱歉,如果这很明显或在其他地方被覆盖,但我整天都在谷歌上搜索,还没有找到真正有效的解决方案。

我的问题如下:我目前正在全屏 UIView 中绘制图像,例如,我们会说图像在 UIView 的右下角。我想在该图像的中心进行旋转变换(CGAffineTransformMakeRotation),但是,默认情况下,旋转命令围绕它自身的 UIView 的中心旋转。结果,当我旋转时,我的图像会在屏幕上移动,而不是停留在原地并围绕自己的中心旋转。

根据我收集到的信息,我需要翻译我的上下文,以便原点(UIView 的中心)位于我的图像中心,旋转,然后通过翻译回原始位置来恢复上下文。

以下是我最接近的工作,但问题是图像旋转时,它在旋转时向下移动。我认为这是由动画补间第一步翻译和第三步翻译引起的,而不是仅仅意识到翻译的起点和终点是相同的......

我也尝试过 CGContextTranslateCTM 和 CGContextSaveGState/UIGraphicsPushContext 之类的东西,但这些似乎效果不大。

我已经为此奋斗了好几天,我目前的解决方案似乎很接近,但我不知道如何摆脱这种翻译补间。有没有人对此有解决方案或更好的方法来解决这个问题?

[更新] 目前我正在以 UIview 的中心为中心绘制我的图像,然后将 UIView.center 属性设置为我想要旋转的原点,然后执行旋转命令。看起来有点像 hack,但在我得到真正的翻译工作之前,这是我唯一的选择。谢谢!

0 投票
1 回答
1417 浏览

iphone - 如何更改核心动画实例的帧速率?

以 CABasicAnimation 为例。如何降低帧速率(开销)?动画运行流畅,但我的 touchesMoved 方法跳过了一个节拍。想要降低动画帧率,所以 touchesMoved 不会跳过动作。