2017-05-17 6 views
1

왜 이런 일이 발생하는지 알 수없는 작은 문제가 있습니다.UIView의 프레임 변경이 제대로 작동하지 않습니다.

사용자 지정 NavigationView가 있습니다. 내 요구 사항은 Google지도에서 탭하면이 NavigationView의 프레임을 변경하는 것입니다. 애니메이션을 사용하여 프레임을 표시하고 숨기 (토글)해야한다는 뜻입니다.

아래는 내 코드입니다 : - 내 코드에서

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 

    if false == boolTapOnNavigationView { 

     UIView.animate(withDuration: 0.5, animations: { 

       self.viewNavigation.frame = CGRect(x: 0, y: -100, width: self.view.frame.width, height: 60) 
       //self.viewNavigation.isHidden = true 
     }) 
     boolTapOnNavigationView = true 
    } 

    else { 

     UIView.animate(withDuration: 0.5, animations: { 
      //self.viewNavigation.isHidden = false 
      self.viewNavigation.frame = CGRect(x: 0, y: 20, width: self.view.frame.width, height: 60) 
     }) 
     boolTapOnNavigationView = false 
    } 
} 

당신은 내가 'boolTapOnNavigationView'라는 깃발을 볼 수 있습니다.

Google지도를 탭하면 해당 코드가 제대로 작동하지만 동일한 ViewController의 다른 버튼을 탭하면 해당 NavigationView의 프레임이 자동으로 반영됩니다.

+0

그것의 구도를하지 중심을 변경해야하지 분명 문제가 실제로 무엇인지! 뷰 컨트롤러'mapView.delegate = self'에 델리게이트를 추가 했습니까? 아니면 복잡성에 직면 해있는 곳에서 말씀해 주시겠습니까? –

+0

예 mapView.delegate =자가 추가되었습니다. 내 문제는 Google지도 상단에 맞춤 탐색보기가 있다는 것입니다. Google지도에서 탭하는 동안 프레임을 변경하고 싶습니다. 감사합니다. – kishor0011

+0

지도보기 프레임을 변경하고 문제가 있는지 확인해주세요. – user3575114

답변

0

당신은

func mapView(_ mapView: GMSMapView, didTapAt coordinate: CLLocationCoordinate2D) { 

     if false == boolTapOnNavigationView { 

      UIView.animate(withDuration: 0.5, animations: { 

        self.viewNavigation.centre.y = self.viewNavigation.centre.y - 100 
        //self.viewNavigation.isHidden = true 
      }) 
      boolTapOnNavigationView = true 
     } 

     else { 

      UIView.animate(withDuration: 0.5, animations: { 
       //self.viewNavigation.isHidden = false 
       self.viewNavigation.centre.y = self.viewNavigation.centre.y + 20 
      }) 
      boolTapOnNavigationView = false 
     } 
    } 
+0

괜찮습니다. 그러나 If Like Like If 다른 버튼을 탭하면 프레임이 자동으로 반영됩니다. – kishor0011

+0

화면의 GIF를 표시 할 수 있습니까 –

+0

예. 나는 그것을 2 분을주기 위해 업데이트 할 것이다. 감사합니다 – kishor0011