我有一个小问题,我无法理解为什么会发生这种情况。
我有一个自定义的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 :(得分: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
}
}