2016-12-28 66 views
1

我正在swift上工作過去4個月,並在這個初始屏幕上工作了2周。在屏幕中間有汽車和2個圖像(城市&地形)作爲背景從右向左(RtoL)循環移動。檢查下面從我的Android應用程序所採取的gif:圖像在循環動畫中移動 - Swift

Taken from my Android app

我只能夠移動背景RTOL但只有一次。我嘗試過其他動畫選項,但似乎沒有任何工作。你可以看到這些圖像比實際屏幕寬得多,所以不應該有任何問題。檢查我的方法如下:

func animate(_ image: UIImageView) { 
UIView.animate(withDuration: 1.0, delay: 0.0, options: [.curveLinear], 
animations: {image.center.x -= 10}, 
completion: {_ in self.animate(image)})} 

我唯一的要求是移動圖像RTOL與循環如上面的GIF沒有間隙。

謝謝:)

+0

如果GIF是你想要的,爲什麼不使用它呢?只需從gif獲取圖像並將它們添加到UIImageView.animationImages。然後將animationDuration設置爲你想要的,並簡單地調用imageView.StartAnimation。它會循環,直到你呼叫stopAnimation –

+0

你的想法是好的,但具有這種質量的gif會使它非常大,我的應用程序無法承受。 –

+0

那麼也許你不得不在圖像瀏覽上翻倍,這樣當圖像的右邊緣到達屏幕的右邊緣時,你可以將同一圖像(作爲另一個實例)追加到第一個圖像的末尾。 –

回答

2

好像你只移動圖像向左,很快圖像將被移出屏幕,你將無法看到它。嘗試在每次動畫迭代後將圖像重新設置回原始位置。你可以用CGAffineTransform做到像這樣:

func animate(_ image: UIImageView) { 
    UIView.animate(withDuration: 5, delay: 0, options: .curveLinear, animations: { 
     image.transform = CGAffineTransform(translationX: -100, y: 0) 
    }) { (success: Bool) in 
     image.transform = CGAffineTransform.identity 
     animate(image) 
    } 
} 

希望幫助

+0

它沒有工作:( 實際上,一個迭代是:屏幕左邊緣的圖像左端 - >屏幕右邊緣的圖像右端。重新設置迭代無助於創建完美的循環。 完成第一次迭代後'圖像的左端應該在屏幕的右邊緣'以使其完美循環。 –