わかりました。正しく理解できれば、x 方向に -100 を画面の一番左の点にマップし、x 方向に 100 を画面の一番右の点にマップし、y 方向に -100 をマップする必要があります。画面の最低点に、y の 100 を画面の最高点にマップします (または、y が下にあるほど大きくなる画面座標系と一致するように、y を私が持っているものから反転させたい場合があります)あなたが得る画面?)。また、ローテーションも考慮する必要があります。
私が理解している限り、UIScreen
そのheight
とを求めていますwidth
:
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat height = [UIScreen mainScreen].bounds.size.height;
ただし、これは回転を考慮していません。私が認識している他の唯一の方法はUIView
、画面をカバーするwidth
ように依頼するheight
ことです (最も簡単には、ビューコントローラーのビューを画面全体にカバーさせることができます)。
画面全体を完全にカバーする がある場合UIView
(myView と呼びましょう)、次のことを試すことができます。
CGFloat width = myView.frame.size.width;
CGFloat height = myView.frame.size.height;
height
これらは自分で方向を調整する必要があります(私の経験から、 andwidth
を取得した場合は間違いなく機能するはずですviewDidAppear:animated:
。また、 s ビュープロパティまたはこのビューのサブビューである必要があります。そうでない場合はUIView
、回転についてビューに伝える他の方法UIViewController
を実装または見つけるため)。didRotateFromInterfaceOrientation:
画面の「幅」と「高さ」を取得したら、int から画面位置に変換できます。次のようなものを試してください:
(CGPoint)convertX:(NSNumber *)x andY:(NSNumber *)y intoPoint
{
pointX = ([x intValue] + 100.0)*width/200.0;
pointY = (-[y intValue] + 100.0)*height/200.0; // remove the - sign at the front of the expression for y to grow as you move down the screen
return CGPointMake(pointX, pointY);
}
x と y の -100 から 100 を画面上のそれぞれのポイントに変換します。