2017-05-17 2 views
1

私は小さな問題を抱えていますが、なぜこれが起こっているのか理解できません。UIViewのフレームを変更するとうまく動作しません。

私はカスタマイズされたNavigationViewを持っています。私の要件は、このNavigationViewのフレームをGoogleマップでタップすると変更することです。アニメーションでフレームを表示/非表示(トグル)する必要があります。以下は

私のコードです: - 私のコードで

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

mapview framを変更して問題が存在するかどうかを確認してください。 – 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他のボタンをタップすると、フレームは自動的に反映されます。 – kishor0011

+0

あなたは画面のGIFを表示することができます –

+0

うん、確かに。私はそれを更新する2分私に与えます。おかげで – kishor0011

関連する問題