Files
suixinkan_uikit/suixinkan/UI/Home/Views/HomeQuickActionsView.swift

87 lines
2.9 KiB
Swift

//
// HomeQuickActionsView.swift
// suixinkan
//
import SnapKit
import UIKit
///
final class HomeQuickActionsView: UIView {
var onCollectPayment: (() -> Void)?
var onSubmitTask: (() -> Void)?
var onToggleOnline: (() -> Void)?
private let stackView = UIStackView()
override init(frame: CGRect) {
super.init(frame: frame)
stackView.axis = .horizontal
stackView.distribution = .fillEqually
stackView.spacing = AppSpacing.sm
addSubview(stackView)
stackView.snp.makeConstraints { make in
make.edges.equalToSuperview()
make.height.equalTo(72)
}
}
@available(*, unavailable)
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func apply(isOnline: Bool) {
stackView.arrangedSubviews.forEach { $0.removeFromSuperview() }
stackView.addArrangedSubview(makeActionButton(title: "立即收款", icon: "yensign.circle", action: #selector(collectPaymentTapped)))
stackView.addArrangedSubview(makeActionButton(title: "提交任务", icon: "doc.text", action: #selector(submitTaskTapped)))
stackView.addArrangedSubview(makeActionButton(
title: isOnline ? "在线" : "离线",
icon: isOnline ? "dot.radiowaves.left.and.right" : "moon",
action: #selector(toggleOnlineTapped)
))
}
private func makeActionButton(title: String, icon: String, action: Selector) -> UIView {
let container = UIView()
container.backgroundColor = AppColor.cardBackground
container.layer.cornerRadius = AppRadius.md
let button = UIButton(type: .system)
button.addTarget(self, action: action, for: .touchUpInside)
container.addSubview(button)
button.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
let imageView = UIImageView(image: UIImage(systemName: icon))
imageView.tintColor = AppColor.primary
imageView.contentMode = .scaleAspectFit
let label = UILabel()
label.text = title
label.font = .app(.bodyMedium)
label.textColor = AppColor.textPrimary
label.textAlignment = .center
let column = UIStackView(arrangedSubviews: [imageView, label])
column.axis = .vertical
column.alignment = .center
column.spacing = 6
column.isUserInteractionEnabled = false
container.addSubview(column)
column.snp.makeConstraints { make in
make.center.equalToSuperview()
}
imageView.snp.makeConstraints { make in
make.width.height.equalTo(22)
}
return container
}
@objc private func collectPaymentTapped() { onCollectPayment?() }
@objc private func submitTaskTapped() { onSubmitTask?() }
@objc private func toggleOnlineTapped() { onToggleOnline?() }
}