5

2 つの垂直辺が傾いているが平行で、上下が水平になるように、長方形を歪めようとしています。

私は 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を定義しますか。

より完全な説明があれば、私はそれを感謝します.

ありがとう

4

1 に答える 1

9

imageViewへの参照を保持するという名前の変数があると仮定しましょうUIImageView
この動作を実現する方法を示すために、小さなサンプルを作成しました。このコードが行うことは、新しいCGAffineTransformマトリックスを作成することです。この行列は、場所 [2,1] の値を除いて、恒等変換行列と同じ値を持ちます。この値は -関数の -パラメータによって制御されcCGAffineTransformMakex 軸に沿ったせん断を制御します。を設定することで剪断量を変えることができます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

-matrix は次のshearTransformようになります。

[1     0     0]  
[0.3   1     0]  
[0     0     1]   
于 2013-09-12T22:05:40.887 に答える