如何将透视转换应用于UIView?

如何将透视转换应用于UIView?

我希望在UIView上执行透视图转换(如在Coverflow中看到)

有没有人知道这是可能的?

我调查过CALayer并且已经浏览了所有实用的程序员核心动画播客,但是我仍然不清楚如何在iPhone上创建这样的转换。

任何帮助,指针或示例代码片段都将是非常感谢的!


蛊毒传说
浏览 568回答 3
3回答

三国纷争

正如Ben所说,您需要使用UIView的层,使用CATransform3D来执行层的旋转。让视角发挥作用的诀窍,如在此描述,直接访问CATransform3D(M34)的一个矩阵单元。矩阵数学从来都不是我的专长,所以我无法确切地解释为什么会这样做,但它确实如此。您需要将这个值设置为初始转换的负分数,然后将层旋转转换应用到该值。您还应该能够执行以下操作:UIView *myView = [[self subviews] objectAtIndex:0];CALayer *layer = myView.layer;CATransform3D rotationAndPerspectiveTransform =  CATransform3DIdentity;rotationAndPerspectiveTransform.m34 = 1.0 / -500;rotationAndPerspectiveTransform = CATransform3DRotate(rotationA  ndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);layer.transform = rotationAndPerspectiveTransform;为每次旋转从零开始重建图层转换。可以找到这方面的完整示例(使用代码)。这里,我在几个CALYER上实现了基于触摸的旋转和缩放,基于BillDudney的一个例子。程序的最新版本,在页面的最底层,实现了这种透视图操作。代码应该是相当简单的阅读。响应中引用的子层转换是应用于UIView的子层的转换CALayer..如果你没有亚层,就不用担心。我在我的例子中使用子层转换,原因很简单,因为在我正在旋转的一个层中包含了两个CALYER。

POPMUISE

为了补充布拉德的答案,并提供一个具体的例子,我借用我自己的答案在另一篇关于类似主题的文章中。在我的回答中,我创建了一个简单的斯威夫特游乐场,你可以下载并播放,其中我演示了如何使用简单的层次结构创建UIView的透视图效果,并展示了使用transform和sublayerTransform..去看看。
打开App,查看更多内容
随时随地看视频慕课网APP