如何在UIView上使用CATransform3D添加特定类型的透视图?

时间:2010-07-18 14:52:50

标签: iphone objective-c cocoa-touch cgaffinetransform catransform3d

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

数学确实不是我最强的观点......但我想知道如何将“视角”添加到UIView中(参见下图)。我使用Photoshop .

中的偏斜选项快速模拟了截图

我已经看过stackoverflow以获得解决方案,我发现How do I apply a perspective transform to a UIView?效果非常好 - 但它并不是我所追求的,因为最左边的高度比最右边的边缘大.

有没有人知道如何做这个CATransform3D但没有这些不同的高度?

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

1 个答案:

答案 0 :(得分:11)

如果您只想歪斜,则不需要3D变换。仿射变换就足够了。

-(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。这将从左到右(0.1 / 0.9)提升1/9,同时从左到右缩小到90%(0.9)。