【问题标题】:Create perspective of rectangles lying on a flat surface创建位于平面上的矩形的透视图
【发布时间】:2011-01-27 02:59:12
【问题描述】:

我已经在 Objective-c 中工作了一段时间,但我还没有真正需要(直到现在)更深入地研究核心动画和图形操作。

我目前有四个 UIImageView,我想将它们动画化到一个位置,使它们看起来像是躺在平坦的表面上。我的意思是,它们会以矩形开始——在屏幕上不失真且平坦,但会动画成倾斜的透视图,使其看起来像是坐在平坦的表面上。

我相信 CATransform3D 是我需要做的,并且已经阅读了许多文档,这些文档都指向使用 .m34 来创建正确的视角。我似乎无法让它工作。下面是我用来尝试使图像倾斜的代码的 sn-p。当我使用下面的代码尝试倾斜图像时,它似乎将其切断而不是显示正确的视角。

CATransform3D transform = CATransform3DIdentity; 
transform.m34 = -1.0f / 700.0f;
// Perform other transforms
transform = CATransform3DRotate( transform,
    degreesToRadians(45.0f), 0.0f, 1.0f, 0.0f);

[layer setTransform:transform];

我可以很好地处理动画,但无法使最终图像倾斜以使其看起来正确。有人对如何实现这一目标有任何建议或示例吗?

【问题讨论】:

    标签: iphone core-animation quartz-graphics


    【解决方案1】:

    动画在我看来是歪斜的。尝试使用 m34 因子使其偏斜更多(将其设置为较低的值,例如 -1.0f/200.0f)。只是实验,你最终会做对的。如果您想让它倾斜更多,您可以将旋转更改为 45 度以外的角度。

    如果您的转换完全没有倾斜,那么您的其他转换之一可能正在覆盖转换(即您正在使用 Make 转换调用之一)。如果是这样:尝试将 transform.m34 分配移动到应用转换之前的最后一件事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-29
      • 2016-01-30
      • 2014-10-27
      • 1970-01-01
      • 2011-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多