使用CGAffineTransform扭曲UIImageView

时间:2013-09-12 17:30:27

标签: iphone ios uiimageview cgaffinetransform

我试图歪斜一个矩形,使两个垂直边倾斜但平行,顶部和底部是水平的。

我正在尝试使用CGAffineTransform并找到了这段代码,但我并没有弄清楚要放在各个部分的内容。

imageView.layer.somethingMagic.imageRightTop = (CGPoint){ 230, 30 };
                imageView.layer.somethingMagic.imageRightBottom = (CGPoint){ 300, 150 };

#define CGAffineTransformDistort(t, x, y) (CGAffineTransformConcat(t, CGAffineTransformMake(1, y, x, 1, 0, 0)))
#define CGAffineTransformMakeDistort(x, y) (CGAffineTransformDistort(CGAffineTransformIdentity, x, y))
虽然据说这很容易,但我不知道在不同的地方放什么。

我认为图像视图将是我想要改变的图像,但是什么会变成什么样的魔法。和imageRightTop和imageRightBottom。

另外我如何定义t。

如果有更全面的解释我会很感激,因为在大多数情况下我只发现这是解释如何扭曲矩形。

由于

1 个答案:

答案 0 :(得分:7)

假设您有一个名为imageView的变量,其中包含对UIImageView的引用 我写了一些示例来演示如何获得此行为。这段代码的作用是创建一个新的CGAffineTransform矩阵。该矩阵具有与身份变换矩阵相同的值,但有一个例外:位置[2,1]处的值。此值由c - CGAffineTransformMake - 参数控制,并控制沿x轴的剪切。您可以通过设置shearValue来更改剪切量。

代码:

CGFloat shearValue = 0.3f; // You can change this to anything you want
CGAffineTransform shearTransform = CGAffineTransformMake(1.f, 0.f, shearValue, 1.f, 0.f, 0.f);
[imageView setTransform:shearTransform];

以下是shearTransform - 矩阵的样子:

[1     0     0]  
[0.3   1     0]  
[0     0     1]