iOS开发

一个不错的登录动画

2022-04-09  本文已影响0人  _浅墨_

效果图:

代码:

//
//  ViewController.swift
//  loginapp
//
//

import UIKit

class ViewController: UIViewController {
    
    lazy var logoImage: UIImageView = {
        
        let image = UIImage(named: "cat")!
        
        let imageView = UIImageView(image: image)
        
        imageView.layer.masksToBounds = true
        
        return imageView
        
    }()
    
    @IBOutlet weak var usernameTextField: UITextField!
    
    @IBOutlet weak var passwordTextField: UITextField!
    
    @IBOutlet weak var loginButton: UIButton!
    
    @IBOutlet weak var loginView: UIView!
    
    var moveLogoAnimator: UIViewPropertyAnimator!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        logoImage.translatesAutoresizingMaskIntoConstraints = false
        
        loginView.addSubview(logoImage)
        
        NSLayoutConstraint.activate([
            
            logoImage.centerXAnchor.constraint(equalTo: loginView.centerXAnchor),
            
            logoImage.centerYAnchor.constraint(equalTo: loginView.centerYAnchor),
            
            logoImage.heightAnchor.constraint(equalToConstant: CGFloat(100.0)),
            
            logoImage.widthAnchor.constraint(equalToConstant: CGFloat(100.0))
            
        ])
        
        loginView.transform = CGAffineTransform(scaleX: 0, y: 0)
        
        usernameTextField.alpha = CGFloat(0)
        
        passwordTextField.alpha = CGFloat(0)
        
        loginButton.alpha = CGFloat(0)
        
        loginView.backgroundColor = UIColor(red: 0.29, green: 0.29, blue: 0.29, alpha: 1.0)
        
    }
    
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        
        loginView.layer.cornerRadius = CGFloat(7.0)
        
        loginButton.layer.cornerRadius = CGFloat(5.0)
        
        logoImage.layer.cornerRadius = CGFloat(50.0)
        
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        UIView.animate(withDuration: 0.8, delay: 1, usingSpringWithDamping: 0.5, initialSpringVelocity: 2, options: .curveEaseOut, animations: {
            
            
            self.loginView.transform = CGAffineTransform(scaleX: 1.0, y: 1.0)
            
        }) { (success) in
            
            self.setupMoveLogoAnimation()
            
            self.moveLogoAnimator.startAnimation()
            
        }
        
    }
    
    func setupMoveLogoAnimation() {
        
        moveLogoAnimator = UIViewPropertyAnimator(duration: 2.0, curve: .easeIn, animations: nil)
        
        moveLogoAnimator.addAnimations({
            
            self.logoImage.frame.origin.y = CGFloat(20.0)
            
            self.loginView.backgroundColor = UIColor.white
            
        }, delayFactor: 0.2)
        
        moveLogoAnimator.addAnimations({
            
            self.usernameTextField.alpha = 1.0
            
        }, delayFactor: 0.6)
        
        moveLogoAnimator.addAnimations({
            
            self.passwordTextField.alpha = 1.0
            
        }, delayFactor: 0.7)
        
        moveLogoAnimator.addAnimations({
            
            self.loginButton.alpha = 1.0
            
        }, delayFactor: 0.8)
        
    }


}


上一篇 下一篇

猜你喜欢

热点阅读