iOS Google 映射方法 UIView 动画不工作
iOS Google maps method UIView animate not working
所以我想在我的地图上隐藏和显示一个放大当前用户位置的按钮。
基本上当地图不再以用户所在位置为中心时,按钮出现并在刚被按下时消失。
按钮在按下时动画消失但在方法被调用时不动画
我正在调用 Google 地图的 api 委托的方法,每次地图移动时都会调用该方法。
这是我的代码:
func showUserLocation() {
mapView.isMyLocationEnabled = true
self.locationManager.startUpdatingLocation()
let userLocation = mapView.myLocation
if let loc = userLocation
{
centreMapOnLocation(location: loc)
if myLocationButton.alpha == 1 {
UIView.animate(withDuration: 0.4, animations: {
self.myLocationButton.alpha = 0
})
}
}
}
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
if myLocationButton.alpha == 0 {
UIView.animate(withDuration: 0.4, animations: {
self.myLocationButton.alpha = 1
})
}
}
当 willMove
方法被调用时,它只是出现但没有动画。
尝试使用显示按钮
self.myLocationButton.isHidden = 假
并隐藏按钮
self.myLocationButton.isHidden = true
在 UIView.animate
块中添加此行:
self.view.layoutIfNeeded()
其中 view
是您要设置动画的按钮的包含视图。这告诉视图在视图的动画周期中重绘。
所以我想在我的地图上隐藏和显示一个放大当前用户位置的按钮。
基本上当地图不再以用户所在位置为中心时,按钮出现并在刚被按下时消失。
按钮在按下时动画消失但在方法被调用时不动画
我正在调用 Google 地图的 api 委托的方法,每次地图移动时都会调用该方法。
这是我的代码:
func showUserLocation() {
mapView.isMyLocationEnabled = true
self.locationManager.startUpdatingLocation()
let userLocation = mapView.myLocation
if let loc = userLocation
{
centreMapOnLocation(location: loc)
if myLocationButton.alpha == 1 {
UIView.animate(withDuration: 0.4, animations: {
self.myLocationButton.alpha = 0
})
}
}
}
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
if myLocationButton.alpha == 0 {
UIView.animate(withDuration: 0.4, animations: {
self.myLocationButton.alpha = 1
})
}
}
当 willMove
方法被调用时,它只是出现但没有动画。
尝试使用显示按钮
self.myLocationButton.isHidden = 假
并隐藏按钮
self.myLocationButton.isHidden = true
在 UIView.animate
块中添加此行:
self.view.layoutIfNeeded()
其中 view
是您要设置动画的按钮的包含视图。这告诉视图在视图的动画周期中重绘。