Animation to scale and move UIView (swift)

前端 未结 2 371
旧巷少年郎
旧巷少年郎 2021-01-30 16:41

I have a UIView, placed in the middle of the screen. When the user presses a button, I want it to move up near top of the screen as it shrinks to about a fifth of its size.

2条回答
  •  悲&欢浪女
    2021-01-30 17:36

    You can achieve basic UIView animation in several ways in Swift. Below code is just a simple approach...

    class ViewController: UIViewController {
    
    @IBOutlet weak var animationButton: UIButton!
    @IBOutlet weak var myView: UIView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // I added seperate colour to UIView when animation move from one animation block to another.So, You can get better understanding how the sequence of animation works.
      self.myView.backgroundColor = .red
    }
    
    @IBAction func animateButton(_ sender: UIButton) {
    
        UIView.animate(withDuration: 0.5, delay: 0.0, options: UIViewAnimationOptions.curveEaseIn, animations: { 
            //Frame Option 1:
            self.myView.frame = CGRect(x: self.myView.frame.origin.x, y: 20, width: self.myView.frame.width, height: self.myView.frame.height)
    
            //Frame Option 2:
            //self.myView.center = CGPoint(x: self.view.frame.width / 2, y: self.view.frame.height / 4)
            self.myView.backgroundColor = .blue
    
            },completion: { finish in
    
        UIView.animate(withDuration: 1, delay: 0.25,options: UIViewAnimationOptions.curveEaseOut,animations: {
            self.myView.backgroundColor = .orange      
            self.myView.transform = CGAffineTransform(scaleX: 0.25, y: 0.25)
    
            self.animationButton.isEnabled = false // If you want to restrict the button not to repeat animation..You can enable by setting into true
    
            },completion: nil)})
    
          }
         } 
    

    Output:

提交回复
热议问题