2012-01-15 9 views
0

iPhoneの縦向きに設定されたCGPointを持っています。 iPhoneがランドスケープに移動するときに、画面の端に比例してその位置を維持するように、このポイントをどのように変換できますか?そしてもう一度?デバイスの向きに応じてCGPointを移動する

答えて

-1

(のUIViewControllerのドキュメントでそれを確認してください)インスタンス変数あなたのするCGPointを作成し、このメソッドを上書き:

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 

あなたはそれが比例どのようにするために新しいポイントを計算するためにいくつかのコードが必要になります欲しいです。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    if ((self.interfaceOrientation == UIInterfaceOrientationPortrait) || (self.interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown)) { 
     myPoint = CGPointMake(320/460*myPoint.x, 460/320*myPoint.y); 
    } 
    else { 
     myPoint = CGPointMake(460/320*myPoint.x, 320/460*myPoint.y); 
    } 
} 
+0

おかげでキースが、私は助けることはできませんが、私はあなたが持つになっているか見て、これは動作するはずだと思う:ステータスバーを可能に、私は(私の数学を推定することは大丈夫です)、これは何が必要だと思います数学、しかしそれはしません。ポイントは、回転すると画面外にプロットされます。 – Skybird

+0

こんにちはキース、私は、間違った方向を確認していました。あなたのコードは動作し、私はあなたの答えを正しいものとしてマークしました - 歓声、そしてありがとう。 – Skybird

+0

ようこそ。 –

0

このヘルパーメソッド試してみてください。私はあなたが画面の端に比例」によって何を意味するかは非常にわからないようあなたは、あなたが望むもののためにそれぞれの場合の値を微調整する必要がある場合があり

- (CGPoint)adjustTouch:(CGPoint)aTouch forOrientation:(UIInterfaceOrientation)aOrientation; { 

    CGPoint touchLocation = CGPointZero; 

    switch (aOrientation) { 
    case UIInterfaceOrientationPortrait: 
     touchLocation = aTouch; 
     break; 
    case UIInterfaceOrientationPortraitUpsideDown: 
     touchLocation.x = aTouch.x; 
     touchLocation.y = 480 - aTouch.y; 
     break; 
    case UIInterfaceOrientationLandscapeLeft: 
     touchLocation.x = aTouch.y; 
     touchLocation.y = aTouch.x; 
     break; 
    case UIInterfaceOrientationLandscapeRight: 
     touchLocation.x = 480 - aTouch.y; 
     touchLocation.y = 320 - aTouch.x; 
     break; 
    default: 
     break; 
    } 
    return touchLocation; 
} 

を"しかし、これはあなたがそれを理解するのに役立つはずです。それが助けてくれることを願って!あなたのビューコントローラで

関連する問題