         isShown = true
         isHidden = false
         alpha = 0
+        // 显示 hud 时禁用父视图交互
+        isParentUserInteractionEnabled = parent?.isUserInteractionEnabled ?? false
+        parent?.isUserInteractionEnabled = false
         parent?.bringSubviewToFront(self)
         parent?.layoutIfNeeded()
         layer.removeAllAnimations()

        return UIImage(named: "chrysan_\(name).png", in: ChrysanView.bundle, compatibleWith: nil)?.withRenderingMode(.alwaysTemplate)
    }
    
    private func showHUD() {
        
        if isShown {

    
    private func pinEdgesToParent() {
        
        
        guard let parent = parent else {
            return
        }
        
        self.translatesAutoresizingMaskIntoConstraints = false;
        
        let frameGuide = UILayoutGuide()
        parent.addLayoutGuide(frameGuide)
        
        let top = topAnchor.constraint(equalTo: frameGuide.topAnchor)
        let bottom = bottomAnchor.constraint(equalTo: frameGuide.bottomAnchor)
        let left = leftAnchor.constraint(equalTo: frameGuide.leftAnchor)
        let right = rightAnchor.constraint(equalTo: frameGuide.rightAnchor)
        let width = NSLayoutConstraint(item: parent, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 1, constant: 0)
        let height = NSLayoutConstraint(item: parent, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 1, constant: 0)
        parent.addConstraints([top, bottom, left, right, width, height])
        
        DispatchQueue.main.async {
            self.parent?.layoutIfNeeded()
        }
    }
    
    private func updateAndShow() {
