我有一个小问题,我不明白为什么会这样。
我有一个自定义的 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 的框架会自动反射(reflect)。
最佳答案
你应该改变中心而不是框架
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
}
}
关于ios - 更改 UIView 的框架无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44016481/