美文网首页
swift UIView控件加角标,超实用

swift UIView控件加角标,超实用

作者: 不言弃zxf | 来源:发表于2020-03-09 14:15 被阅读0次

extension UIView {

    static let buttonBadgeTag = 889

    func showBadge(badgeNum: Int, maxNum: Int = 999, percentX: Float = 0.5, percentY: Float = 0.2) {

        var badgeView: UIView?

        for view in self.subviews {

            if view.tag ==  UIView.buttonBadgeTag {

                badgeView = view

            }

        }

        if (badgeView == nil) || !(badgeView is UILabel) {

            let badgeLabel = UILabel()

            badgeLabel.tag = UIButton.buttonBadgeTag

            badgeLabel.layer.cornerRadius = 7.5

            badgeLabel.layer.masksToBounds = true

            badgeLabel.layer.zPosition = 1

            badgeLabel.backgroundColor = BAColor

            badgeLabel.textAlignment = .center

            badgeLabel.textColor = UIColor.white

            let x: CGFloat = CGFloat(ceilf(percentX * Float(self.frame.size.width)));

            let y: CGFloat = CGFloat(ceilf(percentY * Float(self.frame.size.height)));

            let textWidth = gatwidthForComment(string: "\(badgeNum)", fontSize: 12, height: 15, n: .Regular)

            if badgeNum < 10 {

                badgeLabel.frame = CGRect(x: x, y: y, width: 15, height: 15);

            } else {

                badgeLabel.frame = CGRect(x: x, y: y, width: textWidth + 8, height: 15);

            }

            badgeLabel.adjustsFontSizeToFitWidth = true

            badgeLabel.minimumScaleFactor = 0.5

            if #available(iOS 8.2, *) {

                badgeLabel.font = UIFont.systemFont(ofSize: KScaleH(10), weight: UIFont.Weight.medium)

            } else {

                // Fallback on earlier versions

                badgeLabel.font = UIFont.systemFont(ofSize: KScaleH(10))

            }

            self.addSubview(badgeLabel);

            badgeView = badgeLabel

        }

        if let badgeLabel = badgeView as? UILabel {

            badgeLabel.isHidden = (badgeNum <= 0)

            if badgeNum > maxNum {

                badgeLabel.text = "\(maxNum)+"

            } else {

                badgeLabel.text = String(badgeNum)

            }

        }

    }

}

相关文章

网友评论

      本文标题:swift UIView控件加角标,超实用

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