起動時にアニメーション処理が行われ、ボタンを押した時に再びアニメーション処理を行うといった動作がしたい場合、どのようにコーディングしていけばいいでしょうか?

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    @IBOutlet weak var textLabel: UILabel!

    @IBAction func actionButton(sender: AnyObject) {

        //ここにアニメーションの動作を書きたい。

    }

    @IBOutlet weak var imageView: UIImageView!

    override func viewDidAppear(animated: Bool) {
        imageView.hidden = false
        imageView.frame = CGRect(x: 100, y: 37, width: 240, height: 377)
        //8.0秒間で位置を変える
        UIView.animateWithDuration(8.0, delay:0.5,
            options: UIViewAnimationOptions.CurveEaseInOut,
            animations: {() -> Void in
                //アニメーションの処理
                self.imageView.frame = CGRect(x: 400, y: 37, width: 240, height: 377)},
            completion:{(Bool) -> Void in})
    }
}

1回目(起動時)のアニメーション処理のコードは書けたのですが、
ボタンを押した時のアニメーション処理が分からず・・・
クロージャをはずして書き込もうと思ったのですが、動作できず失敗しました。

ちなみにアニメーション処理は

//起動時(アニメーション前)
imageView.frame = CGRect(x: 100, y: 37, width: 240, height: 377)

//起動時(アニメーション後)
imageView.frame = CGRect(x: 400, y: 37, width: 240, height: 377)

//ボタンを押した時のアニメーション処理
imageView.frame = CGRect(x: 100, y: 37, width: 240, height: 377)

お詳しい方がいましたらご回答宜しくお願い致します。