zoukankan      html  css  js  c++  java
  • 【纯代码】Swift

    //弹窗视图
    class PopView : UIView {
        var selectButtonCallBack:((_ title:String)-> Void)?
        
        var contenView:UIView?
        {
            didSet{
                setUpContent()
            }
        }
        
        override init(frame: CGRect) {
            super.init(frame: frame)
        }
        
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        
        func setUpContent(){
            
            if self.contenView != nil {
                self.contenView?.frame.origin.y = UIScreen.main.bounds.size.height - 191
                self.addSubview(self.contenView!)
            }
            self.backgroundColor = newColorWithAlpha(0, 0, 0, 0.4)
            self.isUserInteractionEnabled = true
            self.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(dismissView)))
            //以下为添加内容,可根据需要删除以下部分
            sudokuConstraints()
        }
        
        @objc func dismissView(){
            UIView.animate(withDuration: 0.3, animations: {
                self.alpha = 0
            }) { (true) in
                self.removeFromSuperview()
                self.contenView?.removeFromSuperview()
            }
        }
        
        func showInWindow(){
            UIApplication.shared.keyWindow?.addSubview(self)
            UIView.animate(withDuration: 0.3, animations: {
                self.alpha = 1.0
                self.contenView?.frame.origin.y = UIScreen.main.bounds.size.height - 191
            }, completion: nil)
        }
        
        //MARK: - 布局
        func sudokuConstraints() -> Void {
            let titleArr = ["","","","","","","","",
                                 "","","","","","","","",
                                 "","","","","","","","",
                                 "","","","","","",""]
            
            for (index,value) in titleArr.enumerated() {
                let button = createButton(title: value)
                let margin = (UIScreen.main.bounds.size.width - 8 * 39)/(8 + 1)
                let col  = CGFloat(index % Int(8))
                let row  = CGFloat(index / Int(8))
                let viewX = margin +  col * (39 + margin)
                let viewY = 7 + row * (39 + 7)
                
                button.frame = CGRect(x: viewX, y: viewY,  39, height: 39)
                self.contenView!.addSubview(button)
            }
        }
        
        func createButton(title:String) -> UIButton {
            let button = UIButton()
            button.setTitle(title, for: .normal)
            button.setTitleColor(newColor(0, 0, 0), for: .normal)
            button.backgroundColor = .white
            button.layer.masksToBounds = true
            button.layer.cornerRadius = 5.0
            
            button.addTarget(self, action: #selector(buttonClickAction(button:)), for: .touchUpInside)
            return button
        }
        
        @objc func buttonClickAction(button:UIButton) -> Void {
            if self.selectButtonCallBack != nil {
                self.selectButtonCallBack!(button.titleLabel?.text ?? "")
            }
        }
    }

    使用:

    let popview = PopView.init(frame:UIScreen.main.bounds)
            popview.contenView = UIView.init(frame: CGRect.init(x: 0, y: UIScreen.main.bounds.size.height - 191 ,  UIScreen.main.bounds.size.width, height:191 ))
    popview.contenView?.backgroundColor = newColor(206, 206, 206)
    popview.selectButtonCallBack = {
        (title:String) -> Void in
        self.righAbbreviationButton.setTitle(title, for: .normal)
        popview.dismissView()
    }
    popview.showInWindow()

    效果图:

  • 相关阅读:
    软件工程个人作业01
    阅读计划及浅读问题
    引言作业1
    多态和异常分析课后
    大道至简七八章阅读
    接口与继承 课后实践
    构建执法阅读笔记02
    冲刺第五天
    学习进度条七
    冲刺第四天
  • 原文地址:https://www.cnblogs.com/xjf125/p/10613363.html
Copyright © 2011-2022 走看看