 private var playerObserveContext = 0
 
 class MoviePlayerView: UIView {
+    // MARK: enum
+
+    enum ControlUIStatus {
+        case hidden
+        case show
+    }
+
     // MARK: UI
 
     @IBOutlet var contentView: UIView!

        #keyPath(AVPlayer.timeControlStatus),
    ]

    // MARK: Initializer

    override init(frame: CGRect) {

     }

    // MARK: Helper

    @objc private func didTapControlView(_ recognizer: UIGestureRecognizer) {
        switch controlUIStatus {
        case .hidden: controlUIStatus = .show
        case .show: controlUIStatus = .hidden
        }
    }

    func showControlUI() {
        UIView.animate(withDuration: 0.2, animations: { () -> Void in
            self.playButton.alpha = 1
            self.progressTimeLabel.alpha = 1
            self.durationTimeLabel.alpha = 1
            self.slashLabel.alpha = 1
            self.slider.alpha = 1
        }, completion: { completion in })
    }

    func hideControlUI() {
        UIView.animate(withDuration: 0.2, animations: { () -> Void in
            self.playButton.alpha = 0
            self.progressTimeLabel.alpha = 0
            self.durationTimeLabel.alpha = 0
            self.slashLabel.alpha = 0
            self.slider.alpha = 0
        }, completion: { completion in })
    }

    private func removeObserver() {
        for keyPath in observedKeyPaths {
