完善首页权限申请流程与队列播报体验。
对齐 Android 无权限强制弹窗、角色下拉与申请页交互,补充 UIButton configuration 适配,并增强景区排队 TTS 与相关单元测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@ -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()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user