底部出一个半透明的View,类似友盟分享页面 (Swift 4)

xib图解:

底部出一个半透明的View,类似友盟分享页面 (Swift 4)

import UIKit


class ShareUMView: UITableViewCell {


    

    @IBOutlet weak var topView: UIView!

    @IBOutlet weak var bottomViewH: NSLayoutConstraint!

    @IBOutlet weak var shareTitleLabel: UILabel!

    @IBOutlet weak var contentViewbs: UIView!

    

    

    var titleArr: [String]! = []//["朋友圈", "微信", "QQ", "微博", "空间", "邀请卡"]

    var imageArr: [String]! = []//["share1", "share2", "share3", "share4", "share5", "share6"]

    

    override func awakeFromNib() {

        super.awakeFromNib()

        self.topView.addGestureRecognizer({

            return UITapGestureRecognizer.init(target: self, action: #selector(self.dismissAction(tap:)))

        }())

        self.contentView.backgroundColor = UIColor.black.withAlphaComponent(0.5)

    }


    

    func config(titles: [String], images: [String]) {

        self.titleArr = titles

        self.imageArr = images

        config()

    }

    

    private let topSpace: CGFloat = 12.0

    private let W =  UIScreen.main.bounds.width / 3

    private let H: CGFloat = CGFloat(75)

    func config() {

       

        var contentH: CGFloat = 0

        if imageArr.count % 3 > 0 {

            contentH = CGFloat(imageArr.count / 3 + 1) * (H + topSpace)

        } else {

            contentH = CGFloat(imageArr.count / 3) * (H + topSpace)

        }

        bottomViewH.constant = contentViewbs.frame.minY + contentH + 20

        

        for i in 0..<imageArr.count {

            let viewX = W * CGFloat(i % 3)

            let viewY = (topSpace + H) * CGFloat(i / 3)

            

            let containViewme = UIView(frame: CGRect.init(x: viewX, y: viewY, width: W, height: H))

            contentViewbs.addSubview(containViewme)

            

            let iv = UIImageView.init(frame: CGRect.init(x: (containViewme.frame.width - 50) / 2, y: 0, width: 50, height: 50))

            iv.image = UIImage.init(named: imageArr[i])

            iv.isUserInteractionEnabled = true

            containViewme.addSubview(iv)

            

            let label = UILabel.init(frame: CGRect.init(x: 0, y: iv.frame.maxY, width: containViewme.frame.width, height: 25))

            label.textAlignment = .center

            label.font = UIFont.init(name: "PingFang-SC-Medium", size: 13)

            label.textColor = UIColor.init(red: 140 / 255, green: 140 / 255, blue: 142 / 255, alpha: 1)

            label.text = self.titleArr[i]

            label.isUserInteractionEnabled = true

            containViewme.addSubview(label)

            

            let button = UIButton.init(frame: containViewme.bounds)

            button.setTitle(titleArr[i], for: .normal)

            button.setTitleColor(UIColor.clear, for: .normal)

            button.setTitleColor(UIColor.clear, for: .selected)

            button.addTarget(self, action: #selector(self.action(sender:)), for: .touchUpInside)

            containViewme.addSubview(button)

        }

        

    }

    

    var shareSuccessClosure:((String) -> Void)!

    @objc func action(sender: UIButton) {

        let titleStr = sender.currentTitle!

        print("titleStr---->\(titleStr)")

        //此处处理对应的分享

        self.removeFromSuperview()

        switch titleStr {

        case "朋友圈":

            break

        case "微信":

            break

        case "QQ":

            break

        case "微博":

            break

        case "空间":

            break

        case "邀请卡":

            break

        default:

            break

        }

        shareSuccessClosure(sender.currentTitle!)

    }

    

    @objc func dismissAction(tap: UITapGestureRecognizer) {

        self.removeFromSuperview()

    }

    

    override func setSelected(_ selected: Bool, animated: Bool) {

        super.setSelected(selected, animated: animated)


        // Configure the view for the selected state

    }

    

}


  

 //实际使用

        let shareV = Bundle.main.loadNibNamed("ShareAndGetView", owner: self, options: nil)?.first as! ShareAndGetView

        shareV.configData(frameCustom: self.view.bounds, imageStr: nil, getMoneyStr: nil, mark: 0)

        shareV.shareCloaure = {(shareStr) -> Void in

            let sharetoView = Bundle.main.loadNibNamed("ShareUMView", owner: self, options: nil)?.first as! ShareUMView

            

            sharetoView.config(titles: ["朋友圈", "微信", "QQ", "微博", "空间", "邀请卡"], images: ["share1", "share2", "share3", "share4", "share5", "share6"])

            sharetoView.shareSuccessClosure = {(titleStr) -> Void in

                print("分享页面的点击\(titleStr)")

        }

        self.view.addSubview(shareV)