// // AppStatusBadge.swift // suixinkan // import SnapKit import UIKit /// 统一状态标签,合并订单 / 个人信息等 badge 配色逻辑。 final class AppStatusBadge: UIView { /// 语义色调。 enum Tone { case info case success case warning case danger case neutral } private let label = UILabel() override init(frame: CGRect) { super.init(frame: frame) AppFont.captionMedium.apply(to: label) label.textAlignment = .center addSubview(label) label.snp.makeConstraints { make in make.edges.equalToSuperview().inset( UIEdgeInsets( top: AppSpacing.xxs, left: AppSpacing.xs, bottom: AppSpacing.xxs, right: AppSpacing.xs ) ) } layer.cornerRadius = AppRadius.xs clipsToBounds = true } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } /// 按语义色调与文案刷新展示。 func apply(tone: Tone, text: String) { label.text = text switch tone { case .info: label.textColor = AppColor.info backgroundColor = AppColor.infoBackground case .success: label.textColor = AppColor.success backgroundColor = AppColor.successBackground case .warning: label.textColor = AppColor.warning backgroundColor = AppColor.warningBackground case .danger: label.textColor = AppColor.danger backgroundColor = AppColor.dangerBackground case .neutral: label.textColor = AppColor.textTabInactive backgroundColor = AppColor.inputBackground } } /// 订单状态映射(对齐 Android OrderView)。 func applyOrderStatus(_ status: Int, text: String) { switch status { case 18, 20: apply(tone: .info, text: text) case 30: apply(tone: .success, text: text) case 50: apply(tone: .danger, text: text) default: apply(tone: .warning, text: text) } } }