How to move button to random position? (Swift)

10,971

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.

Share:
10,971
perte
Author by

perte

Product Designer · Client's BFF.

Updated on June 04, 2022

Comments

  • perte
    perte almost 2 years

    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.