【问题标题】:iPhone iOS which CGAffineTransform does isometric transform [ _ ] to /_/CGAffineTransform 将 [_] 等距变换为 /_/ 的 iPhone iOS
【发布时间】:2012-05-23 18:01:36
【问题描述】:

我需要让一个矩形视图 [ ] 看起来好像它的顶部向后旋转,而底部固定在适当的位置: / \ 。生成的图像是等距的,底部比顶部宽。

我需要哪个 CGAffineTransform 来实现这个目标?

【问题讨论】:

  • 张贴示例图片可以让您更了解问题。
  • 您尝试做的事情听起来像是透视投影变换,根据定义它不是仿射的。我认为您需要做的不仅仅是一次转换才能在标准视图对象中实现这一目标
  • 您可以为与此视图关联的 CALayer 添加转换。 CALayer 支持 CATransform3D

标签: iphone objective-c ios uiview cgaffinetransform


【解决方案1】:

正如其他人所指出的,你不能用 CGAffineTransform 来做到这一点。

但是,正如我在this answer 中描述的那样,使用 CATransform3D 相对容易。您需要调整 CATransform3D 的 m34 组件以使变换具有一定程度的透视,围绕 X 轴旋转视图,并可能对其进行缩放,以使底边保持与原始未旋转的宽度相同查看。

或者,您可以将视图底层的anchorPoint 调整为位于底部,而不是中心。然后将从该边缘应用旋转,这应保持底部边缘长度不变,并为您提供视图的后退透视效果。我相信 (0.5, 1.0) 的值会将anchorPoint 设置为下边缘。

【讨论】:

    【解决方案2】:

    布拉德,我找到了这个关于如何进行透视转换的示例(由您提供!):

    http://www.sunsetlakesoftware.com/2008/10/22/3-d-rotation-without-trackball

    由于某种原因,它在我的代码中不起作用。我的按钮应用了 3d 变换,但没有应用缩放效果。

    【讨论】:

      猜你喜欢
      • 2012-12-07
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多