2016-08-10 4 views
0

誰かが私を助けてくれますか?座標がオブジェクトの元の座標と等しいかどうかを比較する方法

主な情報から始めましょう:私は2つのビューを持ち、1つはInfoViewと呼ばれるアプリケーションを作成しました。このInfoViewのは、次のコードで画面をオフに位置しています:アプリの起動時に

(コードビューを非表示にする)

UIView.animateWithDuration(1.0, delay: 0.3, options: [ ], animations: {self.InfoView.center.x -= self.view.bounds.width + 150}, completion: nil) 

ITSは自動的に移動しました。 ViewDidAppearにコード非表示ビューを配置しました。

ボタンInfoを押すと、InfoViewは左から右に元の座標に戻るようになります(x = 12、y = 20のストーリーボードに配置すると、ビューサイズは画面サイズによって異なります)。私はそれを戻すために次のコードを使用します。

(コードビューの表示)

UIView.animateWithDuration(1.0, delay: 0.0, options: [ ], animations: {self.InfoView.center.x += self.view.bounds.width + 150}, completion: nil) 

InfoViewのはそのオフスクリーンれるように、再び(コードビューを非表示)を押したときには、ビューを隠すというボタンがあります。

私の問題は、Iphoneが電話(電話またはSMSなど)を受け取った場合、電話が終了した後、画面にInfoViewが表示され、Show View Codeを押すことなく表示されることです。 アイブ氏はその後でビューを隠さ:

InfoView.Hidden = True 

そして、私はビューの表示コードを実行するときには、falseに変更し、それを隠したときに、それはようにtrueになります。しかし、今すぐ電話を受けた後、通話が終了した後InfoViewが表示されません(InfoViewが表示されません)。Info Infoボタンを押すと、InfoViewが突然画面に表示され、到達不能(画面外)です。

私の質問では、InfoViewの座標を比較する方法があるため、画面上に表示されていても表示されていない場合は、表示ビューを実行して画面に戻すことができます。 if文と同様です。以下のような例:

if InfoView == CGPoint(12,20).... //(Then Run Hide View) 

(私はif文が間違っている知っている)と私はapplicationWillResignActiveでアプリデリゲートにそのFUNCを実行するようになったことを理解します。

誰かが私を助けることができますか、私は正しい道にいるのですか、誰かが私に別の解決策を教えてください。 (私にそれをよりよく説明する必要がある場合は教えてください)

答えて

0

以下の方法で比較してください。ハードコーディングされたポイントと合併しないでください。

if(InfoView.center.x > self.view.bounds.width) 
{ 
    //infoview is hidden 
} 
else 
{ 
    //infoview is visible 
} 
+0

この問題は、表示されていないか表示されていません。問題は、コールが受信されるとInfoViewの位置が画面の左側にあるオフスクリーンから画面上に現れるように変更され、InfoViewが実行されている場合は画面の右側がアニメーション化されます。 –

関連する問題