2016-08-10 4 views
0

Kann mir bitte jemand helfen ??Wie zu vergleichen, wenn die Koordinaten gleich den ursprünglichen Koordinaten eines Objekts sind

Beginnen wir mit der Hauptinformation: Ich habe eine App erstellt, die eine 2-Ansicht hat und eine heißt InfoView. Diese Infoview wird außerhalb des Bildschirms mit dem folgenden Code:

(-Code ausblenden Ansicht)

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

Seine automatisch, wenn die App startet bewegt. Ich habe die Code-Hide-Ansicht auf ViewDidAppear platziert.

Wenn der Knopf Info gedrückt wird, wird das InfoView von links nach rechts zu seinen ursprünglichen Koordinaten, (Wie ich es auf dem Storyboard mit x = 12 und y = 20 und die Größe der Ansichten hängt von der Bildschirmgröße). Ich verwende den folgenden Code, um es zurückzubringen.

(Code-Ansicht anzeigen)

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

Die Infoview verfügt über eine Taste, dass, wenn sie gedrückt versteckt die Ansicht (-Code ausblenden Ansicht) wieder, so dass seine Off-Screen.

Mein Problem ist, dass, wenn ich die App ausprobiere, wenn das iPhone einen Anruf (Telefonanruf oder SMS oder etc) empfängt, nach Beendigung des Anrufs das InfoView auf dem Bildschirm anzeigen würde und ohne den Show View Code zu drücken. Ive versteckt dann die Ansicht mit:

InfoView.Hidden = True 

Und wenn ich die Show View Code ausführen ändert es falsch, und wenn es versteckt sich dreht es wahr und so weiter. Aber jetzt, wenn ich einen Anruf bekomme und nachdem der Anruf beendet ist, kann ich das InfoView nicht sehen (obwohl es gut ist). Wenn ich die Show-Info-Taste drücke, erscheint das InfoView plötzlich auf dem Bildschirm und erleichtert die rechte Seite des Bildschirms es ist unerreichbar (außerhalb des Bildschirms).

Meine Frage ist es eine Möglichkeit, die InfoView-Koordinaten zu vergleichen, so dass, wenn es auf dem Bildschirm (Und ich habe es nicht aufgerufen, führen Sie die Show-Ansicht) könnte es zurück vom Bildschirm gesendet werden. Wie mit einer if-Anweisung. zum Beispiel wie:

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

(Ich weiß, dass die if-Anweisung falsch ist) und ich verstehe, dass ich diese func im AppDelegate im applicationWillResignActive zu laufen bekam.

Bitte kann mir jemand helfen, bin ich auf dem richtigen Weg oder kann mir jemand eine andere Lösung geben. (Sagen Sie mir, wenn ich es besser erklären muss)

Antwort

0

Sie sollten es durch unten Weg vergleichen. Kommen Sie nicht mit hardcoded Punkt zusammen.

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

Das Problem ist nicht, ob es versteckt oder sichtbar ist. Das Problem besteht darin, dass der InfoView-Standort beim Empfang eines Anrufs nicht mehr auf der linken Seite angezeigt wird, sondern direkt auf dem Bildschirm angezeigt wird. Wenn die Funktion InfoView ausführt, wird die Ansicht außerhalb des Bildschirms auf der rechten Seite animiert. –

Verwandte Themen