SwiftUI iOS 14中的新UIDatePicker

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI iOS 14中的新UIDatePicker相关的知识,希望对你有一定的参考价值。

参考技术A UIDatePicker是自ios SDK诞生以来就存在的API,它可以一直追溯到iOS 2.0。如果您已经为iOS开发了一段时间,则肯定知道熟悉下面的界面:

在iOS 7中,整个系统进行了全面的重新设计。 看看我们的老朋友UIDatePicker经过的巨大更新:

……对于我们的老朋友来说,机会不多。 但是iOS 14引入了我们可以使用的全新的日期选择器。 对于我们的最终用户而言,它使用起来更加容易,灵活,而且我们无需花太多时间就可以采用它。

首先,老式的轮式捡拾器实际上并没有消失。 相反,UIDatePicker现在具有一个名为datePickerStyle的属性,您可以在其中让系统使用.automatic样式选择最佳样式,或者您可以在.compact和.inline之间进行选择-这两者都是iOS 14的新功能-或.wheel是旧的 十多年来我们所熟知的风格。

.compact日期选择器样式将用户呈现为用户可以点击的小UI。

这个微小的UI占用更少的空间,而最好的部分是它是交互式的。 当用户点击它时,他们将以其所有的荣耀查看新的完整日历视图.

在此完整的日历视图中,您的用户可以更加灵活地选择时间和日期,并且可以在几个月或更长时间之间移动箭头。

选择器仍然像以往一样可自定义。 例如,您可以显示提示,以仅选择日期或时间,而不是默认情况下两者。

.inline样式
这种样式本质上与.compact相同,不同之处在于您的用户永远不会看到他们必须点击的小界面。 相反,日历或时间选择器组件将在所有荣耀中随时可用。

最后,在.inline或.compact模式下,您的用户可以点击显示右上角的月份和年份标签,然后系统会显示一个拾轮器,让他们快速跳转到不同的月份和年份:

旧的和已知的API在iOS 14中得到了应有的刷新。新的日期选择器易于实现,它为您的用户提供了一种更快的日期检查方法。

QQ:3365059189
SwiftUI技术交流QQ群:518696470

SwiftUI - 访问 iOS 13 的语义颜色

【中文标题】SwiftUI - 访问 iOS 13 的语义颜色【英文标题】:SwiftUI - Accessing iOS 13's semantic colors 【发布时间】:2019-06-14 00:13:22 【问题描述】:

iOS 13 引入了语义颜色:一种指定颜色用途而非实际值的方法。这允许颜色在启用暗模式时自动适应。

在 UIKit 中,这些颜色可以通过UIColor 上的静态成员轻松访问(例如UIColor.label()UIColor.secondaryLabel() 等)。在this documentation page 上可以找到所有可用语义颜色的详尽列表。

但是,SwiftUI 的 Color 类型没有等效的静态成员。因此,这将是无效的:

// Error: Type 'Color?' has no member 'secondaryLabel'
var body: some View 

    Text("Hello World!")
        .color(.secondaryLabel)


我将如何在 SwiftUI 中访问这些语义颜色?

【问题讨论】:

【参考方案1】:

SwiftUI 中的 Color 结构体有一个 UIColor 初始化器。因此,例如,您可以使用标签 UIColor 更改 Text foregroundColor。

import SwiftUI

struct ContentView: View 
    var body: some View 
        NavigationView 
            Text("Hello World")
                .foregroundColor(Color(.label))
        
    


struct ContentView_Previews: PreviewProvider 
    static var previews: some View 
        Group 
            ContentView()

            ContentView()
                .environment(\.colorScheme, .dark)
        
    

【讨论】:

【参考方案2】:

虽然Color 没有这些语义颜色的静态成员,但according to the documentation、Color 确实有一个允许您指定AppearanceColorName 的初始化程序。

但是,我说“根据文档”是因为到目前为止,这个初始化程序似乎在 Xcode 中不可用。在后续的 beta 版本中,当这个初始化器可用时,它可以像这样使用:

var body: some View 

    Text("Hello World!")
        .color(Color(apperanceName: .secondaryLabel))


【讨论】:

实际上,这在 Xcode 中显示不可用的原因是因为此 API 仅适用于 macOS。它在文档中这么说。如果你创建一个 macOS 项目并使用 SwiftUI,这应该是可用的。

以上是关于SwiftUI iOS 14中的新UIDatePicker的主要内容,如果未能解决你的问题,请参考以下文章

iOS 16 中 SwiftUI 防止弹出的 sheet 视图被下滑关闭(dismiss)的新解决方案

iOS 16 中 SwiftUI 防止弹出的 sheet 视图被下滑关闭(dismiss)的新解决方案

列表 iOS 14 SwiftUI 中的额外间距

如何更改 SwiftUI 和 iOS 14 中的单元格背景颜色?

SwiftUI 列表的透明背景——iOS14 中的行为变化

如何在 Xcode 12 的新 SwiftUI App 生命周期中更改 window.rootViewController?