ビューのdrawRect関数で描画されるインタラクティブな図面を含むカスタムUIViewがあります。 iPadの場合、描画サイズは1024 x 768です。iPhoneの場合、CGContextScaleCTMを使用してiPhone用の図面を縮小します。私の図面で適切なアスペクト比を維持するために、ビューを480 x 360に縮小し、ビューのy値を-20に設定します(Viewの上と下の20ピクセルを効果的にトリミングします)。今はすべてが正しいように見えますが、私のビューのインタラクティブな部分が機能するためには、タッチ座標をiPhoneからiPad座標に変換する必要があります。私はUIViewの320高くするとyの値を変換するためのiPhoneの画面サイズからiPadの画面サイズに座標を変換
point.y *=768/320
を使用している場合は場所が(私の図面が歪んでいる)私はハード私は、これは動作するはずです知っているが、私そうでポイントをコーディングするいくつかのテストを行ってきた正しいです作物と一緒に仕事をするのが難しい時です。これまで私が持っていたものは次のとおりです。
CGPoint point = [[touches anyObject] locationInView:self.view];
[self endTouch:&point];
NSLog(@"true point: %@",NSStringFromCGPoint(point));
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
point.x *= 1024/480;
point.y *= 768/360;
NSLog(@"corrected point: %@",NSStringFromCGPoint(point));
}
誰でもこの変換を手伝ってくれますか?ありがとう!
ありがとう!私が以前に得ていた奇妙なことを説明しています。 #defineマクロのヒントもありがとう。それはCなのか、それとも客観的なものなのでしょうか?私はこれらをネットの周りからのコードで使用しているのを見ましたが、私が学び始めた目的のCの本の中でそれらを見いだすことはありませんでした。 – Frank
@jonmorgan逆は何ですか? iPad座標をiPhone座標に変換する必要があります。任意のヒント? – Corey