2016-08-10 2 views
0

누군가 나를 도울 수 있습니까 ??좌표가 객체의 원래 좌표와 같은지 비교하는 방법

주 정보로 시작합니다. 2 개의보기가 있고 하나는 InfoView라는 앱을 만들었습니다. 이 InfoView를 다음 코드로 화면이 위치해 있습니다 :

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

그 이되면 자동으로 응용 프로그램이 시작 이동 (코드보기 숨기기)

. ViewDidAppear에 코드 숨기기 뷰를 배치했습니다.

단추 정보를 누르면 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를 다시 한 번 누르면 뷰를 숨 깁니다 버튼을 (코드보기 숨기기)가 있습니다.

내 문제는 아이폰이 전화 (전화 또는 SMS 등)를 받으면 앱을 시험해 볼 때 통화가 종료 된 후 화면에 InfoView가 표시되고보기보기 코드가 실행되지 않는다는 것입니다. 필자는 다음과 뷰를 숨겨 :

InfoView.Hidden = True 

그리고 내가보기 표시 코드를 실행할 때 false로 변경하고 숨 깁니다 때 등 사실과 변합니다. 그러나 지금 전화를 받고 통화가 끝난 후 InfoView를 볼 수 없습니다. Info Info 버튼을 누르면 InfoView가 갑자기 화면에 나타나고 화면의 오른쪽이 부드럽게 만들어지면서 도달 할 수 없음 (화면 꺼짐).

제 질문은 InfoView 좌표를 비교하여 화면에 표시되지 않은 경우 (보기 뷰를 실행하지 않은 경우) 스크린에서 다시 보낼 수 있도록하는 방법입니다. if 문과 같습니다. 같은 예를 들어 :

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

은 (문이 잘못되면 나는 알고있다) 그리고 나는 내가 applicationWillResignActive에서 애플 대리자에서 그 FUNC를 실행하는 데있어 이해 않습니다.

누군가 나를 도와 줄 수 있습니까? 나는 올바른 방향으로 가고 있습니까? 누군가 다른 해결책을 줄 수 있습니까? (내가 더 잘 설명 할 필요가 있다면 말해주십시오)

답변

0

아래의 방법으로 비교해보십시오. 하드 코드 된 지점과 충돌하지 마십시오.

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

문제는 숨겨져 있거나 표시되지 않습니다. 문제는 호출이 수신되면 InfoView 위치가 화면 왼쪽에서 벗어나 화면 오른쪽에 표시되고 InfoView가 실행되면 func이 실행되어 화면의 오른쪽에서 오른쪽으로 애니메이션이 해제된다는 것입니다. –

관련 문제