iOS Метод Google Maps UIView Animate не работает

Поэтому я хотел бы скрыть и показать кнопку на моей карте, которая увеличивает текущее местоположение пользователя.

В основном, когда карта больше не сосредоточена на местоположении пользователя, кнопка появляется и исчезает, когда она только что была нажата.

Кнопка анимируется при нажатии, но не анимируется при вызове метода

Я вызываю метод делегата API карты Google, который вызывается каждый раз, когда карта перемещается.

Вот мой код:

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, он просто появляется, но без анимации.


person Niall Kiddle    schedule 01.03.2018    source источник
comment
Попробуйте поместить тот же код в метод didMove   -  person Vishal Sonawane    schedule 01.03.2018
comment
В картах Google нет метода didMove, только didChange для положения камеры. Я пытался использовать этот метод, но он вызывается после того, как скрывается, что означает, что он появляется снова.   -  person Niall Kiddle    schedule 01.03.2018


Ответы (2)


В блоке UIView.animate добавьте эту строку:

self.view.layoutIfNeeded()

где view является содержащим вид кнопки, которую вы пытаетесь анимировать. Это говорит представлению о перерисовке во время циклов анимации представления.

person Tom E    schedule 01.03.2018

попробуйте использовать кнопку для показа

self.myLocationButton.isHidden = ложь

и скрыть кнопку

self.myLocationButton.isHidden = true
person Hafiz Shoaib Awan    schedule 01.03.2018