'drawRect'-Functionで手動で描画しているUIViewがあります。これは基本的に座標系であり、Y軸に「値」、「X軸」に「時間」があります。
スペースの問題のため、タイムスタンプを水平ではなく垂直にしたいと思います。この目的のために、私は以下を使用します:
CGContextSaveGState(ctx); //Saves the current graphic context state
CGContextRotateCTM(ctx, M_PI_2); //Rotates the context by 90° clockwise
strPos = CGContextConvertPointToUserSpace(ctx, strPos); //SHOULD convert to Usercoordinates
[str drawAtPoint:strPos withFont:fnt]; //Draws the text to the rotated CTM
CGContextRestoreGState(ctx); //Restores the CTM to the previous state.
ctx(CGContextRef)、strPos(CGPoint)、およびstr(NSString)は変数であり、テキストの高さの幅で「水平テキスト」に対して適切かつ正しく初期化されています。
このコードはiPhone3で問題なく動作しますが、iPhoneの座標系は同じであると想定されていても、CGContextConvertPointToUserSpace関数はまったく異なる結果を生成するため、iPhone 4(Retina)では完全に混乱します。
また、CGAffineTransformを使用してみましたが、同じ結果になりました。
私の質問を要約すると、親座標系の計算された位置(0、0は左上)にテキストを描画するにはどうすればよいですか?
Quartz 2Dに関するAppleのドキュメントをもう一度調べた後、Pi / 2による回転により、すべての書き込み画面が左に移動することに気付きました。
CTMを+heightで変換することにより、書き込みを縦線で表示させることができます。私は努力を続けますが、それでも答えを得ることができれば幸いです。
編集:lawickoのヘッズアップのおかげで、私は問題を解決することができました。詳細については、回答を参照してください。