2009-12-13 4 views

答えて

24

ピーターが言った時に展開するには、次のようなコードを使用するとよいでしょう:

CGAffineTransform newTransform; 
newTransform = CGAffineTransformMakeRotation(1.57*2); 
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5); 

CGAffineTransformMakeが...機能は他の人がトランスフォームを連結ゼロから新しいトランスフォームを作成します。ビューとレイヤーには、一度に1つのトランスフォームしか適用できないため、ビューに複数のスケーリング、回転、および変換エフェクトを同時に作成する方法です。

正しい効果を得るには、変換が連結される順番に注意する必要があります。アップルのドキュメントから

2

これらのうちの1つだけが同時に動作します。

これは、最初のものを2番目のものに置き換えたためです。

どのように変換を保存して別のものを適用できますか?

Concatenate them togetherとし、結果の行列をプロパティに代入します。

CGAffineTransformの変数に変換行列を格納できます。より複雑な変換の中間ステップに使用したり、コードをより明確にする(またはその両方)ことができます。

9

CGAffineTransformConcatは、2つの既存 アフィン変換を組み合わせて構築 アフィン変換行列 を返します。

CGAffineTransform CGAffineTransformConcat (
    CGAffineTransform t1, 
    CGAffineTransform t2 
); 

パラメータは、最初のアフィン変換を t1の。

t2第2のアフィン変換。この アフィン変換は、最初のアフィン変換である に連結されます。

戻り値新しいアフィン 変換マトリックス。すなわち、t '= t1 * t2である。

説明結合は、2つの アフィン変換行列を組み合わせて、 それらを掛け合わせます。 複数の連結を実行して、複数の変換の累積的な の影響を含む単一のアフィン 変換を作成することができます。

行列演算は ではありません。換言すれば、 行列を連結する順序が重要です。 つまり、 の行列t1に行列t2を掛けた結果は、 の結果と行列t1を掛けた行列t2の結果が必ず一致しません。

+0

ありがとうございました。私はちょうどCGAFfineTransformのものを取ったし、それは素晴らしい作品です! – quantumpotato

関連する問題