99 lines
2.6 KiB
Swift
Executable File
99 lines
2.6 KiB
Swift
Executable File
//
|
||
// BadgeView.swift
|
||
// LegendTeam
|
||
//
|
||
// Created by 梁博 on 16/12/21.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
class BadgeView: UIView {
|
||
/// 是否显示为小红点,默认false
|
||
public var onlyShowPoint = false
|
||
/// 是否超过99 只显示... 默认false
|
||
public var showMax99 = false
|
||
/// 显示红点数值,设置为0会自动隐藏
|
||
public var badgeValue = 0 {
|
||
didSet {
|
||
reloadBadge()
|
||
}
|
||
}
|
||
|
||
/// 显示为红点的时候的宽高 默认 8
|
||
public var pointWidth: CGFloat = 8
|
||
/// 字体大小 默认
|
||
public var badgeFont: UIFont = .t.tnmxs
|
||
|
||
private var leftPadding: CGFloat = 4
|
||
private var rightPadding: CGFloat = 4
|
||
private let defaultBgColor = UIColor.c.cin
|
||
private let defaultTextColor = UIColor.white
|
||
private let contentLabel = UILabel()
|
||
|
||
override init(frame: CGRect) {
|
||
super.init(frame: frame)
|
||
|
||
setupUI()
|
||
}
|
||
|
||
private func setupUI() {
|
||
isUserInteractionEnabled = false
|
||
backgroundColor = defaultBgColor
|
||
layer.masksToBounds = true
|
||
|
||
snp.makeConstraints { make in
|
||
make.width.greaterThanOrEqualTo(snp.height)
|
||
}
|
||
|
||
addSubview(contentLabel)
|
||
contentLabel.textColor = defaultTextColor
|
||
contentLabel.font = badgeFont
|
||
contentLabel.textAlignment = .center
|
||
contentLabel.snp.makeConstraints { make in
|
||
make.edges.equalToSuperview()
|
||
}
|
||
}
|
||
|
||
private func reloadBadge() {
|
||
isHidden = false
|
||
contentLabel.isHidden = false
|
||
|
||
if badgeValue == 0 {
|
||
isHidden = true
|
||
return
|
||
}
|
||
|
||
if onlyShowPoint {
|
||
contentLabel.isHidden = true
|
||
contentLabel.snp.remakeConstraints { make in
|
||
make.edges.equalToSuperview()
|
||
make.size.equalTo(CGSize(width: pointWidth, height: pointWidth))
|
||
}
|
||
return
|
||
}
|
||
|
||
if showMax99 && badgeValue > 99 {
|
||
contentLabel.text = "···"
|
||
} else {
|
||
contentLabel.text = String(badgeValue)
|
||
}
|
||
contentLabel.snp.remakeConstraints { make in
|
||
make.leading.equalTo(self).offset(leftPadding)
|
||
make.trailing.equalTo(self).offset(-rightPadding)
|
||
make.width.greaterThanOrEqualTo(6)
|
||
make.top.bottom.equalTo(self)
|
||
}
|
||
}
|
||
|
||
override func layoutSubviews() {
|
||
super.layoutSubviews()
|
||
if bounds.size.width > 0 {
|
||
layer.cornerRadius = bounds.size.height * 0.5
|
||
}
|
||
}
|
||
|
||
required init?(coder: NSCoder) {
|
||
fatalError("init(coder:) has not been implemented")
|
||
}
|
||
}
|