feat: 增加门店身份注销流程
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
import SnapKit
|
||||
import UIKit
|
||||
|
||||
/// 注销页面共用的轻量视觉组件,仅负责颜色、字号和布局,不包含业务状态。
|
||||
@MainActor
|
||||
enum StoreAccountDeregistrationStyle {
|
||||
/// 创建支持多行的系统字体标签。
|
||||
static func label(_ text: String = "", size: CGFloat = 15, weight: UIFont.Weight = .regular,
|
||||
color: UIColor = AppColor.textPrimary) -> UILabel {
|
||||
let label = UILabel()
|
||||
label.text = text
|
||||
label.font = .systemFont(ofSize: size, weight: weight)
|
||||
label.textColor = color
|
||||
label.numberOfLines = 0
|
||||
return label
|
||||
}
|
||||
|
||||
/// 创建统一间距的纵向内容组。
|
||||
static func stack(_ views: [UIView], spacing: CGFloat = 12) -> UIStackView {
|
||||
let stack = UIStackView(arrangedSubviews: views)
|
||||
stack.axis = .vertical
|
||||
stack.spacing = spacing
|
||||
return stack
|
||||
}
|
||||
|
||||
/// 白色圆角卡片,内容由页面提供。
|
||||
static func card(_ content: UIView) -> UIView {
|
||||
let card = UIView()
|
||||
card.backgroundColor = .white
|
||||
card.layer.cornerRadius = 16
|
||||
card.addSubview(content)
|
||||
content.snp.makeConstraints { $0.edges.equalToSuperview().inset(16) }
|
||||
return card
|
||||
}
|
||||
|
||||
/// 统一主次按钮;禁用态及加载期间不依赖系统默认的灰底样式。
|
||||
static func button(_ title: String, id: String, primary: Bool = true) -> UIButton {
|
||||
let button = UIButton(type: .system)
|
||||
button.accessibilityIdentifier = id
|
||||
configure(button, title: title, primary: primary)
|
||||
button.snp.makeConstraints { $0.height.greaterThanOrEqualTo(50) }
|
||||
return button
|
||||
}
|
||||
|
||||
/// 更新按钮角色和文案,保留清晰的主次关系。
|
||||
static func configure(_ button: UIButton, title: String, primary: Bool = true) {
|
||||
var config = primary ? UIButton.Configuration.filled() : .plain()
|
||||
config.title = title
|
||||
config.baseBackgroundColor = AppColor.primary
|
||||
config.baseForegroundColor = primary ? .white : AppColor.primary
|
||||
config.background.cornerRadius = 12
|
||||
config.contentInsets = .init(top: 14, leading: 16, bottom: 14, trailing: 16)
|
||||
config.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { attributes in
|
||||
var attributes = attributes
|
||||
attributes.font = UIFont.systemFont(ofSize: 16, weight: .semibold)
|
||||
return attributes
|
||||
}
|
||||
button.configuration = config
|
||||
button.configurationUpdateHandler = { button in
|
||||
let enabled = button.isEnabled
|
||||
var updated = button.configuration
|
||||
updated?.background.backgroundColorTransformer = UIConfigurationColorTransformer { _ in
|
||||
primary ? (enabled ? AppColor.primary : AppColor.primary.withAlphaComponent(0.12)) : .clear
|
||||
}
|
||||
updated?.titleTextAttributesTransformer = UIConfigurationTextAttributesTransformer { attributes in
|
||||
var attributes = attributes
|
||||
attributes.font = UIFont.systemFont(ofSize: 16, weight: .semibold)
|
||||
attributes.foregroundColor = enabled ? (primary ? .white : AppColor.primary) : AppColor.textSecondary
|
||||
return attributes
|
||||
}
|
||||
button.configuration = updated
|
||||
}
|
||||
}
|
||||
|
||||
/// 以统一的SF Symbol展示提示图标,不加载额外图片资源。
|
||||
static func icon(_ name: String, size: CGFloat = 22) -> UIImageView {
|
||||
let image = UIImageView(image: UIImage(systemName: name,
|
||||
withConfiguration: UIImage.SymbolConfiguration(pointSize: size, weight: .medium)))
|
||||
image.tintColor = AppColor.primary
|
||||
image.contentMode = .scaleAspectFit
|
||||
image.setContentHuggingPriority(.required, for: .horizontal)
|
||||
return image
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user