首页 > 解决方案 > Google Map iOS - 缩放动画在两部不同的手机(iPhone X 与 iPhone 7)上的工作方式不同

问题描述

这是我的方法:

private func animateCamera(lat: Double, long: Double, zoom: Float) {

    DispatchQueue.main.async {
         CATransaction.begin()
         CATransaction.setValue(1, forKey: kCATransactionAnimationDuration)
         let camera = GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: zoom)
         self.mapView.animate(to: camera)
         CATransaction.commit()
    }
}

我是这样称呼它的:

animateCamera(lat: obs.position.latitude, long: obs.position.longitude, zoom: 7)

缩放动画在 iPhone X 上运行。

另一方面,在 iPhone 7 上,缩放动画在完成时并不以我的目标点为中心(作为参数传递的纬度/经度)。

是因为屏幕分辨率不同吗?

我应该如何处理?

标签: iosswiftgoogle-mapszooming

解决方案


尝试在相机位置方法上使用长格式初始化程序和更现代的方法来设置您的持续时间CATransaction

private func animateCamera(lat: Double, long: Double, zoom: Float) {

    DispatchQueue.main.async {

        CATransaction.begin()
        CATransaction.setAnimationDuration(1)
        CATransaction.setAnimationTimingFunction(CAMediaTimingFunction(controlPoints: 0.25, 0.75, 0.25, 1)) // you can add a timing curve too btw
        self.mapView.animate(to: GMSCameraPosition.camera(withLatitude: lat, longitude: long, zoom: zoom, bearing: self.mapView.camera.bearing, viewingAngle: self.mapView.camera.viewingAngle))
        CATransaction.commit()

    }

}

这会在我的所有模拟器中产生相同的结果。


推荐阅读