美文网首页
swift 4.2实现活动指示器和进度条

swift 4.2实现活动指示器和进度条

作者: yytester | 来源:发表于2019-01-08 17:24 被阅读9次

    代码:

    import UIKit
    
    class ViewController: UIViewController {
        
        var activityIndicatorView: UIActivityIndicatorView!
        
        var progressView: UIProgressView!
        var timer: Timer!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            
            self.view.backgroundColor = UIColor.black
            
            let screen = UIScreen.main.bounds
            
            //1. 获得指示器
            self.activityIndicatorView = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.whiteLarge)
            var frame = self.activityIndicatorView.frame
            frame.origin = CGPoint(x: (screen.size.width - frame.size.width)/2, y: 84)
            //重新设置控件位置
            self.activityIndicatorView.frame = frame
            
            //false:当控件处于非活动状态时,控件不会隐藏
            self.activityIndicatorView.hidesWhenStopped = false
            self.view.addSubview(self.activityIndicatorView)
            
            //2.Upload按钮
            let buttonUpload = UIButton(type: UIButton.ButtonType.system)
            buttonUpload.setTitle("Upload", for: UIControl.State())
            
            
            let buttonUploadWidth: CGFloat = 50
            let buttonUploadHeight: CGFloat = 30
            let buttonUploadTopView: CGFloat = 190
            
            buttonUpload.frame = CGRect(x: (screen.size.width - buttonUploadWidth)/2, y: buttonUploadTopView, width: buttonUploadWidth, height: buttonUploadHeight)
    
            buttonUpload.addTarget(self,action: #selector(startToMove(sender:)),for: .touchUpInside)
            self.view.addSubview(buttonUpload)
            
            //3.进度条
            let progressViewWidth:CGFloat = 200
            let progressViewHeight:CGFloat = 2
            let progressViewTopView: CGFloat = 283
            
            self.progressView = UIProgressView(frame: CGRect(x: CGFloat(screen.size.width - progressViewWidth)/2, y: progressViewTopView, width: progressViewWidth, height: progressViewHeight))
            
            self.view.addSubview(self.progressView)
            
            
            //4.Download按钮
            let buttonDownload = UIButton(type: UIButton.ButtonType.system)
            buttonDownload.setTitle("Download", for: UIControl.State())
            
            
            let buttonDownloadWidth: CGFloat = 69
            let buttonDownloadHeight: CGFloat = 30
            let buttonDownloadTopView: CGFloat = 384
            
            buttonDownload.frame = CGRect(x: (screen.size.width - buttonDownloadWidth)/2, y: buttonDownloadTopView, width: buttonDownloadWidth, height: buttonDownloadHeight)
            
            buttonDownload.addTarget(self,action: #selector(downloadProgress(_ :)),for: .touchUpInside)
            self.view.addSubview(buttonDownload)
            
        }
        
        @objc func startToMove(sender: AnyObject) {
            if(self.activityIndicatorView.isAnimating){
                self.activityIndicatorView.stopAnimating()
            } else {
                self.activityIndicatorView.startAnimating()
            }
        }
        
        @objc func downloadProgress(_ sender: AnyObject){
            self.timer = Timer.scheduledTimer(timeInterval: 1.0 , target: self, selector: #selector(download), userInfo: nil, repeats: true)
            
        }
        
        @objc func download(){
            self.progressView.progress = self.progressView.progress + 0.1
            if (self.progressView.progress == 1.0){
                self.timer.invalidate()
            
            
            let alertcontroller: UIAlertController =  UIAlertController(title: "download completed!", message: "", preferredStyle: UIAlertController.Style.alert)
            let okAction = UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil)
            alertcontroller.addAction(okAction)
            //显示
            self.present(alertcontroller,animated: true, completion: nil)
            }
        }
        
    
    
    }
    
    image.png

    相关文章

      网友评论

          本文标题:swift 4.2实现活动指示器和进度条

          本文链接:https://www.haomeiwen.com/subject/ppebrqtx.html