// // AppButton.swift // suixinkan // import SnapKit import UIKit /// 主按钮,对应 Android `AppButton`。 final class AppButton: UIButton { enum Style { case primary case secondary } private let style: Style init(title: String, style: Style = .primary) { self.style = style super.init(frame: .zero) setupUI(title: title) } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override var isEnabled: Bool { didSet { updateAppearance() } } private func setupUI(title: String) { titleLabel?.font = .app(.body) layer.cornerRadius = AppRadius.md clipsToBounds = true setTitle(title, for: .normal) updateAppearance() snp.makeConstraints { make in make.height.equalTo(AppSpacing.buttonHeight) } } private func updateAppearance() { switch style { case .primary: backgroundColor = isEnabled ? AppColor.primary : AppColor.buttonDisabled setTitleColor(.white, for: .normal) setTitleColor(.white, for: .disabled) case .secondary: backgroundColor = AppColor.secondaryButtonBackground setTitleColor(AppColor.primary, for: .normal) setTitleColor(AppColor.primary, for: .disabled) alpha = isEnabled ? 1 : 0.6 } } }