创建一个小部件扩展 添加并配置一个扩展,以在iOS主屏幕和macOS通知中心上显示你的应用程序的内容。 概述 Widget可以直观的显示相关内容,让用户快速进入您的应用了解更多细节。您的应用程序可以提供多种小部件,让用户专注于对他们最重要的信息。 用户可以添加同一小部件的多个副本,根据他们的独特需求和布局来定制每个小部件。如果您允许Widget的自定义功能,用户可以单独定制每个Wid...
我一直在尝试将 SwiftUI 用于一些原生 macOS 应用程序,但最初无法解决这个问题。如果您想从 SwiftUI 为您的 macOS 应用程序提供现代模糊的窗口背景,则没有内置的方法可以做到这一点(或者至少我可以找到,如果有,请告诉我!)。幸运的是,执行此操作的代码简短而简单。 首先,我们需要将视图的背景设置为 NSVisualEffectView. 该类或等效类在 SwiftUI ...
SwiftUI 3.0 为我们带来了一种新的声明式方法来处理提交的值。文本字段、表单、搜索栏允许用户提交我们可以使用的值并使用新的 onSubmit视图修饰符对它们做出反应。本周我们将学习如何使用onSubmit视图修饰符以及它为我们带来的好处。 基本 让我们构建一个允许我们使用searchable可搜索视图修饰符 搜索消息的视图。 struct SearchView: View { ...
我们的许多应用程序在网络或数据处理等后台线程上做了大量工作。我们通常希望显示正在进行的工作的进度或活动指示器。本周我们将学习如何使用ProgressView在 SwiftUI 中呈现不确定和确定的进度。 不确定的进展 显示不确定进度所需要做的就是将ProgressView放置在布局中的任何位置。让我们尝试在一个简单的例子中做到这一点。 struct ContentView: View {...
在这篇文章中,我们将讨论 @StateObject、@EnvironmentObject 和 @ObservedObject 属性包装器之间的区别。我知道这是 SwiftUI 中对于新手来说最令人困惑的话题。 为什么 SwiftUI 确实需要属性包装器? SwiftUI 使用不可变的结构类型来描述视图层次结构。SwiftUI 提供的所有视图都是不可变的。这就是为什么 SwiftUI 为我...
SwiftUI 为我们提供了 ` @State、@Binding、@ObservedObject、@EnvironmentObject和@Environment` 属性包装器。因此,让我们尝试了解它们之间的区别以及我们必须使用哪个以及何时以及为什么。 属性包装器 SE-0258提案中描述的属性包装器功能。这里的主要目标是用逻辑包装属性,这些逻辑可以提取到分离的结构中,以便在代码库中重用它。...
如果您使用文本和背景的默认颜色,iOS/macOS 会自行处理深色模式文学。但有时,您希望与自己的风格保持一致,以使品牌更具吸引力或在竞争中脱颖而出。调整到暗模式需要更多的工作,但该框架仍然为您提供了许多不同的选项,让您的生活更轻松。 本文将解释如何使用ColorScheme环境变量来区分明暗模式,并在图像在暗模式下可见时显示覆盖。 假设您正在处理应用程序的登录屏幕。您决定使用图像作为背...
在iOS 14中,SwiftUI提供了一种使用新 toolbar 修饰符来自定义导航栏标题视图的方法。这与navigationItem.titleView UIKit中的设置相同。 一、导航栏标题视图 要在SwiftUI中自定义导航栏标题视图,我们只需将ToolbarItem展示位置类型设置为.principal新的toolbar修饰符即可。 NavigationView...
本篇文章主要讲解LinearGradient,RadialGradient,RoundedRectangle这3种渐变效果,我会重点讲一下LinearGradient,包括线性渐变的原理。 LinearGradient LinearGradient称为线性渐变,在SwiftUI中,使用LinearGradient非常简单: VStack { RoundedRectan...
在本教程中,我们将讨论在您的SwiftUI应用程序中实现Neumorphism接口设计。您将了解2020年用户界面设计的最大趋势以及如何将其用于SwiftUI应用程序。 Neumorphic Design是Skeomorphic设计的一种新形式,最初在iPhone推出时就使用过。 在本教程的最后,您将能够在SwiftUI应用中创建如下的Neumorp...