私はカスタムUIViewを持っています。これは2つの矩形のUIBezierPathを初期化し、drawRectではこれらの2つのパスを単に埋めます。UIBezierPathsを使用してカスタムUIViewでCGAffineTransformの回転を逆にする
このビューはボタンに配置されています。ボタンをクリックすると、animateWithDurationブロック内で回転が適用されます。
icon.transform = CGAffineTransformMakeRotation(M_PI*-0.25);
これは素晴らしい動作です。
ボタンをもう一度クリックすると、ビューを元の向きに戻して回転させるようにしています。私は試してみました:
icon.transform = CGAffineTransformInvert(icon.transform);
icon.transform = CGAffineTransformMakeRotation(M_PI*0.25);
icon.transform = CGAffineTransformIdentity;
...など多くの変形がありますが、どれも動作していないようです。代わりに、ビューは見えなくなるまでゆがんでいます。何もまったく伸ばされていません。時には、最初のトランスフォームを再度適用するとそれが戻されますが、それ以外の変換では戻らないことがあります。
私は間違っていますか?
も - これは私が何をしているのか、本質的です。あなたの反応は私に問題を再訪するよう奨励しました。私の問題は、私がローテーションと同時に適用していたフレームへの変更であることが判明しました。回転後、フレームが異なっていたため(回転したUIViewを含むため)、フレームを戻そうとしたときに予期しない結果が生じました。私はスケールを適用し、変換を最初のクリックに変換してから、アイデンティティ変換を使用して2番目の変換でこれらの変更を元に戻しました。ご協力いただきありがとうございます! – elijah