我试图倾斜一个矩形,使两个垂直边倾斜但平行,并且顶部和底部是水平的。
我正在尝试使用 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 是我想要更改的图像,但是 somethingMagic 中的内容。以及 imageRightTop 和 imageRightBottom。
还有我如何定义 t。
如果有更详尽的解释,我将不胜感激,因为在大多数情况下,我只发现这是关于如何使矩形倾斜的解释。
谢谢
最佳答案
假设您有一个名为 imageView
的变量,其中包含对您的 UIImageView
的引用。
我写了一个小示例来演示如何获得这种行为。这段代码所做的是创建一个新的 CGAffineTransform
矩阵。该矩阵与恒等变换矩阵具有相同的值,但有一个异常(exception):位置 [2,1] 处的值。此值由 CGAffineTransformMake
函数的 c
参数控制,并控制沿 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];
swift 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
矩阵如下所示:
[1 0 0]
[0.3 1 0]
[0 0 1]
关于iphone - 使用 CGAffineTransform 倾斜 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18770721/