5

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

我正在尝试使用 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))

虽然据说这很容易,但我不知道在不同的地方放什么。

我假设图像视图将是我想要更改的图像,但是什么会变成 somethingMagic。和 imageRightTop 和 imageRightBottom。

另外我如何定义t。

如果有更详尽的解释,我将不胜感激,因为在大多数情况下,我发现这只是对如何使矩形倾斜的解释。

谢谢

4

1 回答 1

9

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

编码:

Objective-C

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];

斯威夫特 5

let shearValue = CGFloat(0.3) // You can change this to anything you want
let shearTransform = CGAffineTransform(a: 1, b: 0, c: shearValue, d: 1, tx: 0, ty: 0)
imageView.transform = shearTransform

这是shearTransform-matrix 的样子:

[1     0     0]  
[0.3   1     0]  
[0     0     1]   
于 2013-09-12T22:05:40.887 回答