美文网首页
swift-基于自定义view的提示语

swift-基于自定义view的提示语

作者: 燃_火 | 来源:发表于2019-05-08 10:54 被阅读0次

    先上效果图:


    IMG_0362.PNG

    swift版本的提示语,我是完全按照OC的逻辑来编写的,实际上就是换了一种语法而已,相对OC来说,swift更为简洁、易读。
    上代码:

    import UIKit
    class RHToast: UIView {
        let ScreentW = UIScreen.main.bounds.width
        let ScreentH = UIScreen.main.bounds.height
        let KScaleW = UIScreen.main.bounds.width/320.0
        let KScaleH = UIScreen.main.bounds.height/568.0
        var textLable = UILabel()
        override init(frame: CGRect) {
            super.init(frame: frame)
        }
        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
        func initWithView (view:UIView,text:String,inDuration:CGFloat) ->UIView{
            var w = CGFloat(120)
            var h = CGFloat(ScreentH-64)
            let dic = NSDictionary(object: UIFont.systemFont(ofSize: 14*KScaleW), forKey: NSAttributedString.Key.font as NSCopying)
            let size = text.size(withAttributes: dic as? [NSAttributedString.Key : Any])
            if size.width > w-20 {
                if size.width < 200-20 {
                    w = size.width + 20
                    h = size.height + 20
                }else{
                    w = 200
                    let size1 = text.boundingRect(with:CGSize.init(width: w, height: h), options: .usesLineFragmentOrigin, attributes: dic as? [NSAttributedString.Key : Any], context: nil)
                    if size1.height<ScreentH-64-20 {
                        h = size1.height+20
                    }
                }
            }else{
                w = size.width + 20
                h = size.height + 20
            }
            self.frame = CGRect(x: (view.bounds.size.width-w)/2, y: (view.bounds.size.height-h)/2, width: w, height: h)
            self.layer.cornerRadius = 6
            self.alpha = 0
            self.backgroundColor = UIColor.init(white: 0, alpha: 0.8)
            
            self.textLable = UILabel.init(frame: CGRect(x: 10, y: 10, width: self.bounds.size.width-20, height: h-20))
            self.textLable.backgroundColor = UIColor.clear
            self.textLable.font = UIFont.systemFont(ofSize: 14*KScaleW)
            self.textLable.textColor = UIColor.white
            self.textLable.numberOfLines = 0
            self.textLable.textAlignment = .center
            self.textLable.lineBreakMode = .byCharWrapping
            self.textLable.text = text
            self.addSubview(self.textLable)
            view.addSubview(self)
            self.show(duration: inDuration)
            return self
        }
        func show(duration:CGFloat) -> Void {
            //简单动画
            UIView.animate(withDuration: 0.5, animations: {
                self.alpha = 1
            }, completion: nil)
            //定时器
            let timer = Timer.scheduledTimer(timeInterval: Double(duration), target: self, selector: #selector(closeToast), userInfo: nil, repeats: false)
            RunLoop.current.add(timer, forMode: .common)
        }
        @objc func closeToast() -> Void {
            UIView.animate(withDuration: 0.5, animations: {
                self.alpha = 0
            }) { (true) in
                self.removeFromSuperview()
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:swift-基于自定义view的提示语

          本文链接:https://www.haomeiwen.com/subject/pttmoqtx.html