Как быстро изолировать код экрана загрузчика? - PullRequest
0 голосов
/ 05 мая 2020

Я создал этот специальный код для создания загрузчика в моем проекте. Проблема в том, что мне нужно скопировать и вставить эту функцию во все мои классы. Есть ли способ объявить этот код в одном классе глобальных функций и просто использовать их везде, где я хочу использовать, позвонив.

import NVActivityIndicatorView


let activityIndicatorView = NVActivityIndicatorView(frame: CGRect(x: 80, y: 80, width: 60, height:60), type: .ballTrianglePath, color: .black)
    let blurView = UIView()

func startLoader(){

            DispatchQueue.main.async
                {
                        self.blurView.isHidden = false

                        self.blurView.frame = self.view.frame
                        self.blurView.backgroundColor = UIColor.gray.withAlphaComponent(0.5)

                        self.view.addSubview(self.blurView)
                        self.activityIndicatorView.center = self.blurView.center
                         self.view.addSubview(self.activityIndicatorView)

                        self.activityIndicatorView.startAnimating()
            }
        }

func stopLoader(){
        DispatchQueue.main.async {

            self.activityIndicatorView.stopAnimating()
            self.blurView.isHidden = true

        }

    }

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Функция First Create для получения activityIndicatorView и blurView . Потому что вам не нужно везде повторять код. И легко изменять все представления загрузчика в одном месте

Class Helper {
    static func getLoaderViews()->(UIView,NVActivityIndicatorView){
        let activityIndicatorView = NVActivityIndicatorView(frame: CGRect(x: 80, y: 80, width: 60, height:60), type: .ballTrianglePath, color: .black)
        let blurView = UIView()
        // create your components,customise and return
        return (blurView,activityIndicatorView)
    }
}

теперь создайте UIViewController Расширение для запуска или остановки загрузчика

extension UIViewController {

    func addLoaderToView(view:UIView,blurView:UIView ,activityIndicatorView:NVActivityIndicatorView) {

                blurView.isHidden = false
                blurView.frame = view.frame
                blurView.backgroundColor = UIColor.gray.withAlphaComponent(0.5)

                view.addSubview(blurView)
                activityIndicatorView.center = blurView.center
                view.addSubview(activityIndicatorView)
                activityIndicatorView.startAnimating()
    }

    func removeLoader(activityIndicatorView:NVActivityIndicatorView,blurView:UIView)  {
        activityIndicatorView.stopAnimating()
        blurView.isHidden = true
    }
}

Теперь вы можете легко добавить или удалить загрузчик в любом UIViewController

    let (blurView,activityIndicatorView) = Helper.getLoaderViews() //In your class scope

//where you want to start
    addLoaderToView(view:self.view,blurView:blurView ,activityIndicatorView:activityIndicatorView)
//where you want to stop
    removeLoader(activityIndicatorView:activityIndicatorView,blurView:blurView)
1 голос
/ 05 мая 2020

Вы можете создать расширение UIView

extension UIView {
  func showActivity() {
    let activityIndicatorView = NVActivityIndicatorView(frame: CGRect(x: 80, y: 80, width: 60, height:60), type: .ballTrianglePath, color: .black)
    let blurView = UIView()
          DispatchQueue.main.async {
                self.blurView.isHidden = false
                self.blurView.frame = self.frame
                self.blurView.backgroundColor = UIColor.gray.withAlphaComponent(0.5)

                self.addSubview(self.blurView)
                self.activityIndicatorView.center = self.blurView.center
                self.addSubview(self.activityIndicatorView)

               self.activityIndicatorView.startAnimating()
            }
     }

}
...