bounty将在6天内到期。此问题的答案有资格获得+50声望奖励。alionthego希望引起更多关注这个问题。
我试图强制SwiftUI DatePicker覆盖用户的设置,并在选择器本身中仅显示24小时时间格式。这在航空相关的应用程序中是相关的。我看到过一些旧的帖子使用UIDatePicker并覆盖区域设置,但这对我也不起作用。下面是我使用SwiftUI的代码,这在物理设备上不起作用,无法强制24小时内选择。它可以在Xcode模拟器上工作,但不能在实际设备上工作。
DatePicker("Start Time", selection: $startTime, displayedComponents: DatePickerComponents.hourAndMinute)
.environment(\.locale, Locale.init(identifier: "da"))
当我在地区设置为US的设备上运行此程序时,它仍然在选择器内显示小时和分钟以及am/pm。我试过其他只使用24小时时间的地区,但它仍然显示上午/下午在选择器本身。尽管它确实将所选时间更改为24小时。我的问题是在picker本身。
似乎没有什么可以做的来覆盖用户在设置/常规/日期和时间/24小时时间中的24小时时间设置
我可以实现一个自定义的弹出框和旋转轮来模拟这一点,但在全屏的iPhone上会遇到问题。我相信还有其他使用自定义逻辑的解决方案,但我想知道是否有任何方法可以强制本地DatePicker不使用am/pm。
我可以通过改变语言环境在Xcode模拟器上显示24小时时间,但它在物理设备上不起作用。
1条答案
按热度按时间s5a0g9ez1#
只需将en_DK更改为da,将en_GB更改为en即可。工作代码在这里。在Swift Playgrounds和真实的设备iPhone 14上测试,iOS 16.5。