これが明らかであるか、他の場所でカバーされている場合は申し訳ありませんが、私は一日中グーグルで検索しており、実際に機能する解決策を見つけていません.
私の問題は次のとおりです。現在、フルスクリーンの UIView で画像を描画しています。たとえば、画像が UIView の右下隅にあるとします。その画像の中心で回転変換(CGAffineTransformMakeRotation)を実行したいのですが、デフォルトでは、回転コマンドはUIView自体の中心を中心に回転します。その結果、回転すると、画像が所定の位置にとどまり、独自の中心を中心に回転するのではなく、画像が画面の周りを移動します。
私が収集したものから、原点(UIViewの中心)が画像の中心になるようにコンテキストを翻訳し、回転させてから、元の場所に翻訳してコンテキストを復元する必要があります。
以下は、私が作業した最も近いものですが、問題は、画像が回転している間、回転中に下に移動することです。これは、移動の開始点と終了点が同じになることに気付くのではなく、最初のステップの移動と 3 番目のステップの移動をアニメーションでトゥイーンすることが原因だと思います...
// Before this i'd make a call to a function that draws a path to a passed in context
CGAffineTransform inverseTranslation = CGAffineTransformMakeTranslation( transX, transY );
CGAffineTransform translation = CGAffineTransformMakeTranslation( -transX, -transY );
CGAffineTransform rot = CGAffineTransformMakeRotation( 3.14 );
CGAffineTransform final = CGAffineTransformConcat( CGAffineTransformConcat( inverseTranslation, rot ), translation );
// Then i apply the transformation animation like normal using self.transform = final etc etc
CGContextTranslateCTM や CGContextSaveGState/UIGraphicsPushContext なども試しましたが、ほとんど効果がないようです。
私はこれと何日も戦ってきましたが、現在の解決策は近いようですが、その翻訳トゥイーンを取り除く方法がわかりません。これに対する解決策、またはこれを行うためのより良い方法はありますか?
[更新]当分の間、UIviewの中心を中心にして画像を描画し、UIView.centerプロパティを回転させたい原点に設定してから、回転コマンドを実行しています。ちょっとしたハックのように思えますが、実際の翻訳が機能するようになるまでは、それが唯一の選択肢です。ありがとう!