斯威夫特(Swift):固执己见

时间:2020-06-29 05:17:05

标签: ios swift view uiview

enter image description here

每当我按下添加按钮时,我都希望下拉视图从黑色视图下方滑动,而不是在顶部显示然后向下滑动。

我以前在情节提要中使用黑色视图,但它一直停留在下拉视图的前面,从而产生了从黑色视图下方滑动的效果。现在,我在情节提要中删除了该视图,并以编程方式创建了一个新视图,然后出现了这个问题。

我尝试了常用方法BringToFront / sendToBack,但这没有帮助。

这是我的代码

override func viewDidLoad() {
        super.viewDidLoad()
        
        blackView = UIView(frame: CGRect(x: 0.0, y: 0.0, width: 500, height: 100))
        blackView.backgroundColor = UIColor.black
        
        self.view.addSubview(blackView)
        self.view.bringSubviewToFront(blackView)
        blackView.layer.zPosition = .greatestFiniteMagnitude
        self.view.sendSubviewToBack(dropDownView)
        
        dropDownView.isHidden = true 

        addButton.setImage(#imageLiteral(resourceName: "addBa"), for: .normal)
        addButton.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
        self.blackView.addSubview(addButton) 
}

    @objc func buttonAction() {
              
           if (dropDownView.isHidden == true ) {
               
               openDropDownView()
           }
           else { closeDropDownViewA() }
           
           }

     func openDropDownView() {
        self.dropDownView.isHidden = false
        
        
        UIView.animate(withDuration: 0.3, delay: 0, options: .curveEaseOut, animations: {
            
          var fabricTopFrame = self.dropDownView.frame
          fabricTopFrame.origin.y -= fabricTopFrame.size.height
          
          var fabricBottomFrame = self.dropDownView.frame
          fabricBottomFrame.origin.y += fabricBottomFrame.size.height
          
          self.dropDownView.frame = fabricTopFrame
          self.dropDownView.frame = fabricBottomFrame
            
            
            UIView.animate(withDuration: 0.5) {
                self.dimView.alpha = 0.75
            }
            
            
            
        }, completion: { finished in
          print("dropDownView opened!")
        })
    }

谢谢!

1 个答案:

答案 0 :(得分:0)

解决了。我加了

     let currentWindowB: UIWindow? = UIApplication.shared.keyWindow
     currentWindow?.addSubview(blackView)

@objc
func buttonAction() {
    if dropDownView.isHidden {
        openDropDownView()
    } else {
        closeDropDownViewA()
    }
}