代码之家  ›  专栏  ›  技术社区  ›  Jamie Chapman

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

  •  6
  • Jamie Chapman  · 技术社区  · 14 年前

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

    数学真的不是我的强项…但我想知道如何向uiview添加“透视图”(见下图)。我用photoshop中的倾斜选项快速模拟了屏幕截图。 .

    我在StackOverflow周围看过这个问题的解决方案,我发现 How do I apply a perspective transform to a UIView? 它的效果很好——但这并不是我真正想要的,因为最左边的边缘比最右边的边缘高。 .

    有人知道我怎么做这个CatTransform3D,但没有这些不同的高度吗?

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

    1 回复  |  直到 14 年前
        1
  •  11
  •   mvds    14 年前

    如果你只是想倾斜,你不需要三维变换。仿射变换就足够了。

    -(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%( 零点九 )