我正在尝试倾斜一个矩形,以便使两个垂直边倾斜但平行,并且顶部和底部是水平的。

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

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

我假设 ImageView 将是我要更改的图像,但是其中的内容变成了magicMagic。和imageRightTop和imageRightBottom。

另外我怎么定义t。

如果有更详尽的解释,我将不胜感激,因为在大多数情况下,我仅将其作为偏斜矩形的解释。

谢谢

最佳答案

假设您有一个名为imageView的变量,其中包含对UIImageView的引用。
我写了一些样本来演示如何实现此行为。该代码的作用是创建一个新的CGAffineTransform矩阵。该矩阵具有与恒等变换矩阵相同的值,但有一个异常(exception):位置[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];

斯威夫特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]

关于iphone - 使用CGAffineTransform倾斜UIImageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18770721/

10-13 04:34