I am using a CADisplayLink to animate 10 different buttons but the buttons are all clumped together. So my question is how can I implement a delay to make each button animate at a different time so they are not all clumped together.     
var buttons:[UIButton] = Array()
override func viewDidLoad() {
    super.viewDidLoad()
    var displayLink = CADisplayLink(target: self, selector: "handleDisplayLink:")
    displayLink.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
    for index in 0...10 - 1{
        buttons.append(UIButton.buttonWithType(.System) as UIButton)
        var xLocation:CGFloat = CGFloat(arc4random_uniform(300) + 30)
        buttons[index].frame = CGRectMake(xLocation, 10, 100, 100)
        buttons[index].setTitle("Test Button \(index)", forState: UIControlState.Normal)
        buttons[index].addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside)
        self.view.addSubview(buttons[index])
    }
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}
func handleDisplayLink(displayLink: CADisplayLink) {
    for index in 0...10 - 1{
        var buttonFrame = buttons[index].frame
        buttonFrame.origin.y += 1
        buttons[index].frame = buttonFrame
        if buttons[index].frame.origin.y >= 500 {
            displayLink.invalidate()
        }
    }
}
func buttonAction(sender: UIButton) {
    sender.alpha = 0
}