iphone - 使用 CGAffineTransform 倾斜 UIImageView

标签 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))

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

我假设 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/

相关文章:

ios - 为什么 iOS 密码自动填充不提示在钥匙串(keychain)上保存密码?

ios - iOS Parse.com内部查询不会获取所有对象

ios - UIImageView 在设备上的启动屏幕中缺少图像

ios - 无法正确更新 UIImageView

iphone - 使用JSON框架时应用崩溃

iphone - 有没有办法在iOS上以编程方式安排事件?

ios - 为什么我不能将在 viewDidLoad 方法中创建的 View 约束到 ViewControllers View ?

ios - 如何在 Xcode 5 中制作不可见按钮?

iphone - 雅虎!天气 XML Feed 允许在 iPhone 应用程序中使用吗?

iphone - 在 iPhone 应用程序中进行 Google 搜索