You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义DateTimePicker显示语言?设置locale后仍显示设备语言求助

解决DateTimePicker标题显示越南语的问题

方案1:同时设置Locale、日历与时区

仅设置locale可能无法覆盖系统区域设置的影响,搭配日历和时区配置能更精准控制显示:

let targetLocale = Locale(identifier: "en_US")
datePicker.locale = targetLocale
// 指定公历,避免系统区域日历影响
datePicker.calendar = Calendar(identifier: .gregorian)
// 使用当前时区或指定目标时区
datePicker.timeZone = TimeZone.current

方案2:确认应用语言环境配置

若应用整体应为英文,需确保AppleLanguages设置正确,防止系统语言覆盖控件显示:

// 强制应用使用英文
UserDefaults.standard.set(["en"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()
// 重新绑定Locale到DatePicker
datePicker.locale = Locale(identifier: "en_US")

注:此设置会影响整个应用语言,若仅需单独控制DatePicker,优先用方案1。

方案3:自定义标题(彻底规避系统控制)

如果前两种方法无效,直接替换系统默认标题:

// 创建自定义标题标签
let titleLabel = UILabel(frame: CGRect(x: 0, y: -30, width: datePicker.frame.width, height: 30))
titleLabel.text = "Time"
titleLabel.textAlignment = .center
datePicker.addSubview(titleLabel)

// 隐藏系统默认标题
datePicker.subviews.forEach {
    if $0 is UILabel {
        $0.isHidden = true
    }
}

方案4:检查代码执行时机

确保设置locale的代码在DatePicker完全初始化后执行(比如viewDidLoad或viewWillAppear方法中),避免被系统后续的默认配置覆盖。

内容的提问来源于stack exchange,提问作者Nam Nguyen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 13:30:07