perte
perte

Reputation: 271

How to move button to random position? (Swift)

I'm creating a very simple app for iPhone.

Just don't know how to make the button (image) move to random position (but on the screen) when it's touched, in Swift.

I'm using Xcode 6.

Upvotes: 2

Views: 11424

Answers (1)

vacawama
vacawama

Reputation: 154681

Use this for the @IBAction of your button:

@IBAction func moveButton(button: UIButton) {
    // Find the button's width and height
    let buttonWidth = button.frame.width
    let buttonHeight = button.frame.height

    // Find the width and height of the enclosing view
    let viewWidth = button.superview!.bounds.width
    let viewHeight = button.superview!.bounds.height

    // Compute width and height of the area to contain the button's center
    let xwidth = viewWidth - buttonWidth
    let yheight = viewHeight - buttonHeight

    // Generate a random x and y offset
    let xoffset = CGFloat(arc4random_uniform(UInt32(xwidth)))
    let yoffset = CGFloat(arc4random_uniform(UInt32(yheight)))

    // Offset the button's center by the random offsets.
    button.center.x = xoffset + buttonWidth / 2
    button.center.y = yoffset + buttonHeight / 2
}

Warning: If you have AutoLayout enabled, your button could snap back to its original location when the subviews are laid out. See the solution to this problem here.

Upvotes: 6

Related Questions