Подражать поведению SVProgressHUD - PullRequest
0 голосов
/ 14 февраля 2020

Я реализовал UIView, который отображает CustomLott ie в центре экрана, у него есть методы show () и hide ().

Как я могу дать ему возможность скрывать ( ) это из другого места, чем где вызывается show () ?? Это код:

class LottieProgressHUD: UIView {

    static let shared = LottieProgressHUD()
    let hudView: UIView
    var animationView: AnimationView

    //options
    var hudWidth:CGFloat    = 200
    var hudHeight:CGFloat   = 200
    var animationFileName   = "coinLoading"

    override init(frame: CGRect) {
        self.hudView = UIView()
        self.animationView = AnimationView()
        super.init(frame: frame)
        self.setup()
    }

    required init?(coder aDecoder: NSCoder) {
        self.hudView = UIView()
        self.animationView = AnimationView()
        super.init(coder: aDecoder)
        self.setup()
    }

    func setup() {
        self.addSubview(hudView)
        show()
    }

    override func didMoveToSuperview() {
        super.didMoveToSuperview()
        if let superview = self.superview {
            self.animationView.removeFromSuperview()


            let screenRect = UIScreen.main.bounds
            let screenWidth = screenRect.size.width
            let screenHeight = screenRect.size.height


            let width: CGFloat  = self.hudWidth
            let height: CGFloat = self.hudHeight
            self.frame = CGRect(x: (screenWidth / 2) - (width / 2) ,y: (screenHeight / 2) - (height / 2), width: width, height: height)
            hudView.frame = self.bounds
            layer.masksToBounds = true

            self.animationView = AnimationView(name: self.animationFileName)
            self.animationView.frame = CGRect(x: 0, y: 0, width: self.hudView.frame.width, height: self.hudView.frame.size.height)
            self.animationView.contentMode = .scaleAspectFill

            self.hudView.addSubview(animationView)
            self.animationView.loopMode = .loop
            self.animationView.play()

            self.hide()
        }
    }

    func show() {
        self.isHidden = false
    }

    func hide() {
        self.isHidden = true
    }
}

Вот как я это называю внутри V C:

let progressHUD = LottieProgressHUD.shared 
self.view.addSubview(progressHUD)
progressHUD.show()

Я бы хотел вызвать progressHUD.hide () внутри виртуальной машины

1 Ответ

0 голосов
/ 14 февраля 2020

У вас уже есть свойство stati c, на которое вы можете ссылаться на тот же экземпляр из любого места. Должен иметь возможность вызывать ваше шоу и скрывать методы из любого класса.

LottieProgressHUD.shared.show()

LottieProgressHUD.shared.hide()
...