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)的新解决方案
如何更改 SwiftUI 和 iOS 14 中的单元格背景颜色?
如何在 Xcode 12 的新 SwiftUI App 生命周期中更改 window.rootViewController?