2017-05-17 74 views
1

我有一個小問題,我無法弄清爲什麼會發生這種情況。更改UIView的框架無法正常工作

我有一個自定義的NavigationView。我的要求是在谷歌地圖上點擊時更改此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」標誌。

這段代碼工作正常,如果我將點擊谷歌地圖,但是當我點擊同一ViewController中的任何其他按鈕時,那個NavigationView的框架會自動反射。

+0

它不是明確什麼是你的問題實際上!你是否已經將委託添加到視圖控制器'mapView.delegate = self'?或者你可以說,你在哪裏面臨複雜性? –

+0

是的mapView.delegate =自己添加。 我的問題是我有一個自定義的導航視圖上的谷歌地圖。 我想改變框架,同時點擊谷歌地圖。 謝謝 – 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

這很好。但同樣的問題如果將點擊任何其他按鈕然後幀自動反映。 – kishor0011

+0

你能不能顯示屏幕的gif –

+0

是的當然。我會更新它給我2分鐘。謝謝 – kishor0011

相關問題