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 是您要设置动画的按钮的包含视图。这告诉视图在视图的动画周期中重绘。