问题标签 [catransformlayer]

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 回答
1231 浏览

objective-c - CATransformLayer 不支持隐式动画?

这是我的动画代码:

self.transformLayer是一个CATransformLayer有两个子层,一个用于前面,一个用于后面(我正在创建“翻转”效果)。然而,这段代码只是设置了位置和变换,没有动画。所以我认为它可能transform不支持隐式动画,所以我把它拿出来并尝试设置位置,但这也没有动画(我肯定知道它position支持隐式动画)。

我做错了什么还是不CATransformLayer支持隐式动画?该文档没有说明它不支持它,所以我假设它支持它。

编辑:这是 Mac OS X,不是 iOS

0 投票
1 回答
441 浏览

ios - 将 OpenGL 转换矩阵转换为在 CATransformLayer 上工作

我一直在为一个项目使用来自 String 的增强现实 SDK 。基本上,这个 SDK 会传回一堆它识别的图像的标记,以及一个关联的 OpenGL 矩阵变换,它勾勒出标记图像在 iPhone 相机视图内的 3D 空间中的位置。我想要做的是将 a 映射CATransformLayer到场景中,以便它在标记图像上正确显示并在其位置播放视频。我认为我可以使用 aAVPlayerLayer内的 a来执行此操作,该 a 应用CATransformLayer了矩阵变换(转换为 a CATransform3D)。

尽我所能,这并不是特别好——我似乎无法在原始 OpenGL 矩阵和CATransform3D.

您可以看到在标记变换和CATransform3D对象之间进行直接转换非常混乱(蓝色位是我的图层):

此问题当前状态的屏幕截图

我认为它们是相同的(由于CALayerGL 的支持,我曾多次被告知它们是相同的)。这是真的?我错过了什么吗?

我可以退回来将我的视频作为纹理渲染到场景中,但如果可能的话,保持高水平会很棒——有什么想法/评论/想法吗?

0 投票
2 回答
2726 浏览

iphone - UIView 3DCube like Clear-app

我已经搜索了 google 和 stackoverflow 上的所有帖子,但我根本无法解决这个难题。我正在尝试重现现在著名的待办事项应用程序“清除”在添加新任务时的效果。他们有某种动画,从顶部开始,新任务会以某种 3D 立方体效果出现。他们的特别之处在于,当你仔细观察时,左右下角总是保持在同一个地方。

现在我有以下内容:一个 320x460 的 UIView 设置在点 0,0 和一个 320x460 的 UIView 设置在点 (0,-460)。我想要的是顶部 UIView 以与从顶部清除相同的立方体效果下降。这是我到目前为止所拥有的:

}

它以某种方式工作但不正确,一旦我进行旋转,视图就会变大,左下角和右下角不在视图中。如果我缩小视图然后做一个 3Dscale 它也搞砸了。我已经通过正确设置图层的 zPosition 解决了一半图像消失的问题,但这是我所得到的。我尝试使用其他项目的代码,但它们的所有 3D 立方体效果都与“清除”应用程序不同。唯一接近的是 iCarousel 项目,但我无法使用应用程序中的正确代码,我无法让它工作。有人能帮我吗?

0 投票
2 回答
2835 浏览

iphone - 如何将 3d 视图旋转 360 度?

我正在开发一个应用程序,其中我将视图旋转 360 度,但我无法将其旋转 360 度。它旋转了 180 度,旋转后又回到了原来的位置。

换句话说,它正在来回旋转。如何连续旋转它......请帮助......

0 投票
1 回答
3695 浏览

ios - 在 iOS 上,为什么设置图层的 sublayerTransform 会变成像 CATranformLayer 一样的行为?

众所周知,zPosition层数只决定了哪一层覆盖哪一层。无论是zPosition10 还是 1000 都不会影响其位置。

也就是说,除非我们使用CATransformLayer包含那些图层,否则zPosition这些图层的 将影响图层的位置。

但是,在 iOS 5.1.1 中运行的以下代码确实会zPosition改变图层的位置...您可以在新的 Single View App 中尝试,并将以下代码添加到ViewController.m. 如果 的zPositionlayer2变为88188我们可以看到图层相应地移动。所以CATransformLayer代码中没有;为什么会这样?(请引用 Apple 文档或任何参考资料)。

同样相关的是,如果将线self.view.layer.sublayerTransform = transform3D;更改为,self.view.layer.transform = transform3D;zPosition将不会影响位置。但根据 Apple 文档,transformsublayerTransform在 self 是否被转换方面有所不同

两个层属性指定变换矩阵:transformsublayerTransform。由 指定的矩阵transform property应用于层及其相对于层的子层 anchorPoint。[...]该 sublayerTransform属性指定的矩阵仅应用于图层的子图层,而不是图层本身。

所以奇怪的是,为什么改变它会导致表现self.view.layer得像CATransformLayer.

0 投票
1 回答
514 浏览

animation - 如何设置 CATransformLayer 动画旋转中心

我有一个带有它的底层视图,我在视图的层中添加了一个CATransformLayer

[view.layer addSublayer:transformLayer];

我添加的图层包含代表几个 3 维块的各个侧面的各种子图层。我想将动画应用于图层以旋转块。

问题是图层大致围绕前角而不是立方体的中心旋转(例如,见下文)。

A/B 标签应移至 1/2 位置,或 1/2 应移至 A/B,具体取决于旋转方向。相反,它从第一个图形改变,大致围绕前角旋转,导致与其他图形接近。上部未标记的块处于不同的视图中并且是静态的,因此不是旋转的一部分。较低标记的块位于我要设置动画的视图/图层中。

如何更改旋转中心以达到我想要的结果?

我已经为各个层弄乱了anchorPointzPositionanchorPointZ,但没有成功。也尝试过setSublayerTransformsetTransform

我应该弄乱块侧子层、变换层、视图层或视图本身的设置来实现我所追求的吗?

任何指导或方向将不胜感激。

0 投票
1 回答
2407 浏览

iphone - CATransform3DTranslate 之后的 CATransform3DRotate

我正在尝试制作一个折叠式 facebook 菜单,就像您在这里看到的那样:http ://www.mobileinc.co.uk/2012/05/folding-iphone-sidebar-menu/

目前,我正在研究“折叠”部分。我有 2 层: - 左层在 {1,.5} 有一个锚点 - 右层在 {0,.5} 有一个锚点

我可以让它们在我的主视图中间折叠而不会出现这样的问题:CGFloat width = self.view.frame.size.width; CGFloat destinationWidth = slider.value * width;

这完美地工作。当我尝试像这样在 x 轴上平移我的图层时,问题就来了: CATransform3DTranslate(transform,-marginLeft,0,-opposite)

图层仍然以良好的 z 平移折叠,但它以一个尴尬的角度结束,就好像整个视图已经旋转了一样。

这显然与视角有关(当我不设置 m34 时,它“有效”)但我不知道如何补偿它......

先感谢您!

干杯,

TeuBeu2

0 投票
1 回答
180 浏览

iphone - 识别 3d 立方体特定侧的触摸

在此处输入图像描述

立方体由 6 个 CALayer 组成,然后将它们添加到单个 CATransformLayer。这个 transformLayer - 以及它,立方体 - 可以使用触摸输入旋转。

问题:我希望能够识别用户触摸了立方体的哪一侧。

我试过这段代码:

但立方体似乎被映射到二维空间:当我触摸第 1 面时,不仅可以识别第 1 面,还可以识别它后面的面(例如第 4 面)。

如何确保只选择离用户较近的一侧(较高的 z 坐标)?

0 投票
1 回答
5520 浏览

ios - 使用 CATransformLayer 警告:在仅变换层中更改属性 opaque 将无效

我创建了一个“ TransformView”子类UIView以支持我在翻转动画中使用的双面视图。这已在其他帖子中提出,例如:

如何在透视图中围绕其中心旋转平面对象?

一切正常,但每次我使用以下方法创建 TransformView 对象时都会收到警告:

警告说:

- 在仅变换层中更改属性不透明,将无效

我猜这个UIView类正在初始化 opaque 属性,这通常适用于 aCALayer但不是 a CATransformLayer

子类化代码很狡猾吗?如果是这样,您还能如何为翻转动画创建 2 面视图?

关于如何停止警告的任何想法?

我怀疑TransformView从 nib 文件创建一个而不是initWithFrame避免警告,但为了避免警告而不得不这样做似乎很笨拙。

0 投票
1 回答
336 浏览

core-graphics - 在哪里可以找到 CATransformLayer 示例和文档

有什么地方可以阅读关于 CATransformLayer 的好教程吗?
Apple 的文档似乎对此非常简短。