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

对齐 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

@ -351,7 +351,9 @@ final class ProfileSpaceSettingsViewController: BaseViewController {
addDeviceButton.setTitleColor(AppColor.primary, for: .normal)
addDeviceButton.titleLabel?.font = .systemFont(ofSize: 14)
addDeviceButton.layer.cornerRadius = 4
addDeviceButton.contentEdgeInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8)
addDeviceButton.setConfigurationContentInsets(
NSDirectionalEdgeInsets(top: 4, leading: 8, bottom: 4, trailing: 8)
)
addDeviceButton.contentHorizontalAlignment = .left
addDeviceButton.snp.makeConstraints { make in make.height.equalTo(28) }
deviceWrap.setTrailingView(addDeviceButton)
@ -940,7 +942,6 @@ final class ProfileAddScheduleViewController: BaseViewController {
orderButton.layer.borderColor = AppColor.border.cgColor
orderButton.layer.borderWidth = 1
orderButton.layer.cornerRadius = 8
orderButton.contentEdgeInsets = UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
var configuration = UIButton.Configuration.plain()
configuration.title = "关联订单 (可选)"
configuration.image = UIImage(systemName: "chevron.down")
@ -1101,7 +1102,9 @@ private final class ProfileTimeButton: UIButton {
setTitleColor(UIColor(hex: 0x4B5563), for: .normal)
backgroundColor = AppColor.inputBackground
layer.cornerRadius = 4
contentEdgeInsets = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8)
setConfigurationContentInsets(
NSDirectionalEdgeInsets(top: 0, leading: 8, bottom: 0, trailing: 8)
)
contentHorizontalAlignment = .center
}
@ -1253,7 +1256,10 @@ private final class ProfileTagWrapView: UIView {
let button = UIButton(type: .system)
button.setTitle(removable ? "\(title) ×" : title, for: .normal)
button.titleLabel?.font = .systemFont(ofSize: style == .device ? 14 : 12)
button.contentEdgeInsets = UIEdgeInsets(top: 2, left: style == .device ? 8 : 4, bottom: 2, right: style == .device ? 8 : 4)
let horizontalInset: CGFloat = style == .device ? 8 : 4
button.setConfigurationContentInsets(
NSDirectionalEdgeInsets(top: 2, leading: horizontalInset, bottom: 2, trailing: horizontalInset)
)
button.layer.cornerRadius = 4
switch style {
case .label: