代码之家  ›  专栏  ›  技术社区  ›  Douglas

对uiview应用桶变形

  •  3
  • Douglas  · 技术社区  · 15 年前

    我有一个uiscrollview,它填充了一个横向屏幕,其中包含一个小的uiviews树,我可以在里面水平滚动。我想对scrollview应用一个桶形失真,这样当子视图从scrollview的外部移动到中心时,它们就会改变形状。

    什么是一个好的什么去应用这样的扭曲?

    是否有方法覆盖滚动视图的drawrect,绘制到位图上,扭曲它,然后将其绘制到滚动视图的上下文中?或者有内置的api来进行这种扭曲吗?

    barrel distortion http://www.arielnet.com/Main/images/fig1f.gif

    1 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    7 年前

    通过正确地转换每个uiview的层,可以接近这种效果。使用catransform3d,您可以在三维中旋转和平移每个层,以及 apply a perspective effect . 对于您的情况,您可以翻译每个uiview层,使它们像一个旋转木马,中间的视图向前并直接显示在屏幕上,而侧面的层稍微倾斜并从屏幕上凹下。这不会导致图层本身的曲率(它们仍将绘制为矩形),但如果在主视图的图层上应用变换以创建透视效果,则应该能够非常接近。

    对于这种层的三维定位示例,我建议 this example 在那里,一个完整的三维迷宫是由卷轴构成的。

    就滚动视图而言,您可能需要对此进行自定义触摸处理。您也许可以通过响应uiscrollViewDelegate方法(如scrollViewDidScroll:),但我自己没有尝试过。