[iOSアプリ開発] パターン背景自動スクロールを作ってみた

今回は、パターン画像を敷き詰めた背景が一定のスピードで上へスクロールし続ける、背景自動スクロールをつくります。

今回使うパターン画像はこちら。

bg_auto_scroll_animation_01

やり方としては、パターン背景用のUIViewを配置して、1パターンの高さ分スクロールさせるアニメーションを作り、それをリピートさせます。
前準備として、画面に背景スクロール用のUIView(bgAnimationView)を配置しておきます。
そのあと、そのViewControllerで背景自動スクロール処理を書きます。
ViewControllerのソースはこちら。

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet weak var bgAnimationView: UIView!
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        startBackgroundAnimation()
    }
    
    private func startBackgroundAnimation() {
        let bgImage = UIImage.init(named: "penguin")!
        bgAnimationView.backgroundColor = UIColor.init(patternImage: bgImage)
        
        bgAnimationView.frame.size = CGSize(width: view.frame.width,
                                            height: view.frame.height + bgImage.size.height)
        let startOrigin = CGPoint.zero
        let endOrigin = CGPoint(x: 0, y: -bgImage.size.height)
        bgAnimationView.frame.origin = startOrigin
        
        UIView.animate(withDuration: 2.0,
                       delay: 0.0,
                       options: [.repeat, .curveLinear],
                       animations:{ self.bgAnimationView.frame.origin = endOrigin },
                       completion: nil)
    }
    
}

L13〜14 で、パターン背景をセットしています。
L16〜17 で、パターン背景用のUIViewのサイズをセットしています。画面より少し大きめにセットしていて、パターン画像1つ分大きめの高さにします。
L18〜20 で、パターン背景用のUIViewのスタート位置をセットします。
L22〜26 で、アニメーションを実行します。 「options」に「.curveLinear」を指定して一定の速度で移動させます。

動かしてみるとこんな感じです。

bg_auto_scroll_animation_02

ではでは。