完善首页权限申请流程与队列播报体验。

对齐 Android 无权限强制弹窗、角色下拉与申请页交互,补充 UIButton configuration 适配,并增强景区排队 TTS 与相关单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-14 13:46:45 +08:00
parent c083f1d4b3
commit efb3925257
50 changed files with 2585 additions and 455 deletions

View File

@ -9,17 +9,33 @@ import UIKit
/// pill Android `PeriodButton`
final class StatisticsPeriodButton: UIButton {
///
enum CornerStyle: Equatable {
case capsule
case fixed(CGFloat)
}
var periodTitle: String = "" {
didSet { setTitle(periodTitle, for: .normal) }
}
/// 使
var cornerStyle: CornerStyle = .capsule {
didSet { setNeedsLayout() }
}
override var isSelected: Bool {
didSet { updateAppearance() }
}
override func layoutSubviews() {
super.layoutSubviews()
layer.cornerRadius = bounds.height / 2
switch cornerStyle {
case .capsule:
layer.cornerRadius = bounds.height / 2
case .fixed(let radius):
layer.cornerRadius = max(0, radius)
}
}
override init(frame: CGRect) {
@ -36,7 +52,9 @@ final class StatisticsPeriodButton: UIButton {
titleLabel?.font = .app(.bodyMedium)
layer.cornerCurve = .continuous
clipsToBounds = true
contentEdgeInsets = UIEdgeInsets(top: 6, left: 20, bottom: 6, right: 20)
setConfigurationContentInsets(
NSDirectionalEdgeInsets(top: 6, leading: 20, bottom: 6, trailing: 20)
)
updateAppearance()
}