2016-03-05 80 views
0

我有这样的方法:与谷歌continus动画映射

private func setupCameraPositionForMovement(markerPos: CLLocationCoordinate2D, secondPos: CLLocationCoordinate2D) { 

    let bearing = bearingBetweenLatLngs(markerPos, end: secondPos) 
    let cameraPosition = GMSCameraPosition(target: markerPos, zoom: 16, bearing: bearing + 20, viewingAngle: 90) 

    map.animateToCameraPosition(cameraPosition) 
} 

我使用这个方法来制作动画运动从markerPossecondPos,而这项工作很好,当我一旦称呼它:

CATransaction.begin() 
CATransaction.setAnimationDuration(1) 
setupCameraPositionForMovement(markers[selectedIndex - 1].position, secondPos: markers[selectedIndex].position) 
CATransaction.commit() 

现在,我想多次调用这个动画来显示一个继续动作, 所以我试过这段代码:

for i in 1..<markers.count { 
    CATransaction.begin() 
    CATransaction.setAnimationDuration(1) 
    setupCameraPositionForMovement(markers[i - 1].position, secondPos: markers[i].position) 
    CATransaction.commit() 
} 

但没有任何好处。

当我搜索这个问题时,我发现像CAAnimationGroup,但我不知道如何在这种情况下使用它。

任何人都可以帮助我吗?

回答

1

CAAnimationGroup允许将多个动画分组并同时运行。分组动画在CAAnimationGroup实例指定的时间空间中运行。

分组动画的持续时间不缩放到CAAnimationGroup的持续时间。相反,动画剪辑到动画组的持续时间。

CAAnimationGroup只有一个属性:动画。

此属性旨在向图层添加动画数组。例如,假设您想要在屏幕上移动图层时更改图层的透明度。如果您只是简单地创建两个动画并将它们逐个添加到一个图层,那么您将失去对同步的控制,并且取决于您的应用正在执行的操作,在两个动画之间可能会有一些可见的延迟。

欲了解更多信息,请检查此page

您还可以查看此SO question了解更多信息。

+0

那么,在我的情况下,我可以如何继续运动? – wajeeh