3

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

应用这样的扭曲有什么好处?

有没有办法为滚动视图覆盖 drawRect,绘制到位图上,扭曲它,然后将其绘制到 ScrollView 的上下文中?还是有内置的 API 来做这种失真?

桶形失真
(来源:arielnet.com

4

1 回答 1

1

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

对于这种层的 3-D 定位示例,我推荐使用CALayers 构建完整的 3-D 迷宫的示例。

就滚动视图而言,您可能必须为此进行自定义触摸处理。您可能可以通过响应 UIScrollViewDelegate 方法(如 scrollViewDidScroll:)来解决问题,但我自己没有尝试过。

于 2009-11-03T19:10:33.383 回答