有人发现 UIDatePicker 在 iOS 14 下坏了?

Osc*_*car 31 xcode interface-builder uidatepicker ios

在 iOS 14 下,我的应用程序中的日期/时间选择器已损坏。项目中没有任何变化。它们在故事板中定义并且运行良好,直到我几天前更新。

现在他们不是纺纱厂;它们是带有静态文本的大灰色框。

在此处输入图片说明

更新:Apple 通过将日期/时间选择器的样式默认为“自动”而不是“轮子”(以前存在的唯一样式,并且每个人的现有屏幕布局都是为它设计的)破坏了现有项目。请参阅下面的 Sanzio 的回答。

San*_*eli 47

在奥斯卡的回答中添加一些额外的信息......

UIDatePicker根据此处此处的文档,现在具有三种不同的样式。日期选择器的样式可由.preferredDatePickerStyle属性访问,该属性可以设置为四种不同的情况:

  1. .automatic - 指示系统根据当前平台和日期选择器模式选择具体样式的样式。
  2. .compact - 指示日期选择器显示为标签的样式,点击时会显示日历样式的编辑器。
  3. .inline - 指示日期选择器显示为内联、可编辑字段的样式。
  4. .wheels - 指示日期选择器显示为轮选择器的样式。

如果你想看看它们在 iOS 14 之前的表现,请坚持使用 .wheels风格。还值得注意的是,并非所有样式都可以容纳所有日期和时间设置,因此您只能设置首选样式。

最后,此属性仅在 iOS 13.4 或更高版本中可用,因此您必须使用以下内容完成版本控制:

if #available(iOS 13.4, *) {
    yourDatePicker.preferredDatePickerStyle = UIDatePickerStyle.automatic
} else {
    // Fallback on earlier versions
}
Run Code Online (Sandbox Code Playgroud)


小智 14

if #available(iOS 13.4, *) {
        datePicker.preferredDatePickerStyle = .wheels
    }
Run Code Online (Sandbox Code Playgroud)


小智 9

如果有人在寻找目标 C

if (@available(iOS 13.4, *)) {
        datePicker.preferredDatePickerStyle = UIDatePickerStyleWheels;
    } 
Run Code Online (Sandbox Code Playgroud)


Osc*_*car 5

事实证明,Apple 添加了第二个非常不同风格的 UIDatePicker,并莫名其妙地将其设为旧项目的默认设置。

您现在必须进入所有日期/时间选择器的设置并将样式从“自动”更改为“轮子”。“自动”基于什么以及为什么它不默认为以前唯一存在的样式是未知的。