iphone - CATransform3D 变换

标签 iphone ios uiview core-animation transform

我正在尝试使用 CATransform3D 向 View 添加透视图。目前,这就是我得到的:

enter image description here

这就是我想要得到的:

enter image description here

我很难做到这一点。我完全迷失在这里。这是我的代码:

CATransform3D t = CATransform3DIdentity;
    t.m11 = 0.8;
    t.m21 = 0.1; 
    t.m31 = -0.1; 
    t.m41 = 0.1;
    [[viewWindow layer] setTransform:t];

最佳答案

矩阵元素 .m34 负责透视。文档中没有太多讨论,所以你必须玩弄它。这个答案稍微谈谈如何使用它:https://stackoverflow.com/a/7596326/1228525

要实际查看该矩阵的效果,您需要做两件事:
1. 将该透视矩阵应用于父 View 的子层变换
2. 旋转 subview (您想要透视的那个) - 否则它将保持平坦,您将无法判断它现在具有 3D 透视图。

这些数字是任意的,让它们看起来最好:

CATransform3D t = CATransform3DIdentity;
t.m34 = .005;
parentView.layer.sublayerTransform. = t;
childview.layer.transform = CATransform3DMakeRotation(45,1,0,0); 

根据 subview 在父 View 中的位置,透视图看起来会有所不同。如果 child 位于 parent 的中心,就像您直接以 3D 方式查看 child View 一样。距离中心越远,您从掠过的角度观看的效果就越好。

这是我使用上面的代码并将 subview 居中得到的:(显然我是新手,所以不允许发布图片,所以你必须看到链接)http://i.stack.imgur.com/BiYCS.png

根据这些图片很难判断你的目标是什么。如果我的答案不是您想要的,多一点解释可能会有所帮助。从图片中我可以看出,底部不是透视...

关于iphone - CATransform3D 变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9946895/

相关文章:

iphone - 如何重命名目录?

ios - 我如何找到 UITableview 滚动差异 - swift

ios - 如何确保 didSelectRowAtIndexPath 打开正确的 View

arrays - 在数组中的 UIView 上调用自定义函数

ios - 在 Swift 中为 UILabel 文本颜色设置动画

java - 适用于 Swing 开发人员的 Cocoa(触摸)#1 : Where Are the Layouts?

ios - 如何以编程方式快速使用 CAGradientLayer 将渐变设置为 UIView( subview )?

ios - 为什么我的自定义 View 没有出现在模拟器中

iphone - Objective-C : Return an array of objects from a class method

ios - iS 旋转 View CGAffineTransformMakeRotation