2017-05-17 41 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

相关问题