我该如何在UIView上使用CATransform3D添加特定类型的透视效果?

6

我已经创建了一段时间的iPhone应用程序,使用基本的变换(旋转、缩放等),但现在我想做一些更复杂的事情。

数学真的不是我的强项...但我想知道如何给UIView添加“透视”效果(请参见下面的图片)。我使用Photoshop中的扭曲选项快速模拟了屏幕截图.

我在stackoverflow上寻找解决方案,我发现如何将透视变换应用于UIView?它非常出色-但这并不是我想要的,因为最左边边缘的高度大于最右边边缘.

有人知道我如何做到这一点CATransform3D,但没有这些不同的高度吗?

alt text http://img594.imageshack.us/img594/4354/perspectivel.png

1个回答

11

如果您只想进行倾斜操作,那么您不需要使用三维转换。一个仿射变换就足够了。

-(void)drawRect:(CGRect)rect {
    CGContextRef ctx = UIGraphicsGetCurrentContext();
    CGAffineTransform transform = CGAffineTransformIdentity;
    transform.b = -0.1;
    transform.a = 0.9;
    CGContextConcatCTM(ctx,transform);
    // do drawing on the context
}

这是从一个有类似变换的项目中修改而来的复制粘贴,但你可能需要调整参数a和b。这将使得从左到右上升1/9(0.1/0.9),同时从左到右压缩到90%(0.9)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接