Establish AppColor/AppFont/AppSpacing/AppRadius theming, shared components, and design-system docs so pilot screens align with Android while keeping iOS-native spacing and touch targets. Co-authored-by: Cursor <cursoragent@cursor.com>
51 lines
1.2 KiB
Swift
51 lines
1.2 KiB
Swift
//
|
||
// ProfileStatusBadgeView.swift
|
||
// suixinkan
|
||
//
|
||
|
||
import SnapKit
|
||
import UIKit
|
||
|
||
/// 个人信息页状态标签,内部委托 `AppStatusBadge`。
|
||
final class ProfileStatusBadgeView: UIView {
|
||
|
||
enum Style {
|
||
case accountActive
|
||
case scenic
|
||
case auditPending
|
||
case auditApproved
|
||
case auditRejected
|
||
case bankPending
|
||
case bankApproved
|
||
case bankRejected
|
||
}
|
||
|
||
private let badge = AppStatusBadge()
|
||
|
||
override init(frame: CGRect) {
|
||
super.init(frame: frame)
|
||
addSubview(badge)
|
||
badge.snp.makeConstraints { make in
|
||
make.edges.equalToSuperview()
|
||
}
|
||
}
|
||
|
||
@available(*, unavailable)
|
||
required init?(coder: NSCoder) {
|
||
fatalError("init(coder:) has not been implemented")
|
||
}
|
||
|
||
func apply(style: Style, text: String) {
|
||
switch style {
|
||
case .accountActive:
|
||
badge.apply(tone: .success, text: text)
|
||
case .scenic, .auditApproved, .bankApproved:
|
||
badge.apply(tone: .info, text: text)
|
||
case .auditPending, .bankPending:
|
||
badge.apply(tone: .warning, text: text)
|
||
case .auditRejected, .bankRejected:
|
||
badge.apply(tone: .danger, text: text)
|
||
}
|
||
}
|
||
}
|