区块链技术博客
www.b2bchain.cn

如何让 SwiftUI 的列表变得更加灵活求职学习资料

本文介绍了如何让 SwiftUI 的列表变得更加灵活求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

  • 前言
  • 使用新速记语法
  • 元素绑定和自定义滑动操作

前言

List 可能是 SwiftUI 附带的内置视图中最常用的一种,它使我们能够在任何 Apple 平台上呈现“类似于表格视图”的用户界面。 今年,List 获得了许多非常重要的升级,使其更加灵活和易于定制。 让我们看看都有哪些新功能。

作为起点,假设我们正在处理以下 ArticleList 视图,该视图使用 ArticleListViewModel 来呈现文章列表:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             NavigationLink(                 destination: ArticleView(article: article),                 label: {                     VStack(alignment: .leading) {                         Text(article.title)                             .font(.headline)                         Text(article.description)                             .foregroundColor(.secondary)                     }                 }             )         }     } }

上面的内容目前是使用 SwiftUI 中初版的概念和 API 编写的,下面让我们尝试使用新功能来为我们的列表实现自定义样式,并且使代码更加健壮。

使用新速记语法

让我们从一个很小的特性开始,这是一个非常受欢迎的变化,可以使用类似 enum 的速记语法来引用 SwiftUI 附带的任何内置 ListStyle 类型。 比如,如果我们想将 “inset grouped” 样式应用于列表中,我们不需要拼出整个 InsetGroupedListStyle 名称,而是可以简单地将其称为 .insetGrouped

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             ...         }         .listStyle(.insetGrouped)     } }

这样的改变还是非常好的,可以让我们的开发更加方便,阅读时感觉更加自然。

元素绑定和自定义滑动操作

接下来,让我们看看如何将完全自定义的滑动操作添加到列表中。 为了演示这种情况,我们在 List 中嵌套一个 ForEach (因为在 SwiftUI 的中,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。 然后,让我们使用另一个新功能,集合元素绑定,让系统自动为我们的 articles 数组中的每个元素创建一个可变绑定:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List {             ForEach($viewModel.articles) { $article in                 ...             }         }         .listStyle(.insetGrouped)     } }

注意:关于上述创建集合元素绑定的新方法,即使我们的应用程序在较旧的操作系统版本上运行,也是没有问题的。 完全向后兼容!

由于每个 article 值在 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。 在这种情况下,用户可以轻松的在项目视图上滑动来决定喜不喜欢对应的文章:

“`swift
struct ArticleList: View {
@ObservedObject var viewModel: ArticleListViewModel

var body: some View {     List {         ForEach($viewModel.articles) { $article in             NavigationLink(                 ...             )             .swipeActions {                 Button(                     action: {                         article.isFavorite.toggle()                     },                     label: {                         if article.isFavorite {                             Label("Remove from favorites",                                 systemImage: "star.slash"                             )                         } else {                             Label("Add to favorites",                                 systemImage: "star"                             )                         }

  • 前言
  • 使用新速记语法
  • 元素绑定和自定义滑动操作

前言

List 可能是 SwiftUI 附带的内置视图中最常用的一种,它使我们能够在任何 Apple 平台上呈现“类似于表格视图”的用户界面。 今年,List 获得了许多非常重要的升级,使其更加灵活和易于定制。 让我们看看都有哪些新功能。

作为起点,假设我们正在处理以下 ArticleList 视图,该视图使用 ArticleListViewModel 来呈现文章列表:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             NavigationLink(                 destination: ArticleView(article: article),                 label: {                     VStack(alignment: .leading) {                         Text(article.title)                             .font(.headline)                         Text(article.description)                             .foregroundColor(.secondary)                     }                 }             )         }     } }

上面的内容目前是使用 SwiftUI 中初版的概念和 API 编写的,下面让我们尝试使用新功能来为我们的列表实现自定义样式,并且使代码更加健壮。

使用新速记语法

让我们从一个很小的特性开始,这是一个非常受欢迎的变化,可以使用类似 enum 的速记语法来引用 SwiftUI 附带的任何内置 ListStyle 类型。 比如,如果我们想将 “inset grouped” 样式应用于列表中,我们不需要拼出整个 InsetGroupedListStyle 名称,而是可以简单地将其称为 .insetGrouped

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             ...         }         .listStyle(.insetGrouped)     } }

这样的改变还是非常好的,可以让我们的开发更加方便,阅读时感觉更加自然。

元素绑定和自定义滑动操作

接下来,让我们看看如何将完全自定义的滑动操作添加到列表中。 为了演示这种情况,我们在 List 中嵌套一个 ForEach (因为在 SwiftUI 的中,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。 然后,让我们使用另一个新功能,集合元素绑定,让系统自动为我们的 articles 数组中的每个元素创建一个可变绑定:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List {             ForEach($viewModel.articles) { $article in                 ...             }         }         .listStyle(.insetGrouped)     } }

注意:关于上述创建集合元素绑定的新方法,即使我们的应用程序在较旧的操作系统版本上运行,也是没有问题的。 完全向后兼容!

由于每个 article 值在 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。 在这种情况下,用户可以轻松的在项目视图上滑动来决定喜不喜欢对应的文章:

“`swift
struct ArticleList: View {
@ObservedObject var viewModel: ArticleListViewModel

var body: some View {     List {         ForEach($viewModel.articles) { $article in             NavigationLink(                 ...             )             .swipeActions {                 Button(                     action: {                         article.isFavorite.toggle()                     },                     label: {                         if article.isFavorite {                             Label("Remove from favorites",                                 systemImage: "star.slash"                             )                         } else {                             Label("Add to favorites",                                 systemImage: "star"                             )                         }

  • 前言
  • 使用新速记语法
  • 元素绑定和自定义滑动操作

前言

List 可能是 SwiftUI 附带的内置视图中最常用的一种,它使我们能够在任何 Apple 平台上呈现“类似于表格视图”的用户界面。 今年,List 获得了许多非常重要的升级,使其更加灵活和易于定制。 让我们看看都有哪些新功能。

作为起点,假设我们正在处理以下 ArticleList 视图,该视图使用 ArticleListViewModel 来呈现文章列表:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             NavigationLink(                 destination: ArticleView(article: article),                 label: {                     VStack(alignment: .leading) {                         Text(article.title)                             .font(.headline)                         Text(article.description)                             .foregroundColor(.secondary)                     }                 }             )         }     } }

上面的内容目前是使用 SwiftUI 中初版的概念和 API 编写的,下面让我们尝试使用新功能来为我们的列表实现自定义样式,并且使代码更加健壮。

使用新速记语法

让我们从一个很小的特性开始,这是一个非常受欢迎的变化,可以使用类似 enum 的速记语法来引用 SwiftUI 附带的任何内置 ListStyle 类型。 比如,如果我们想将 “inset grouped” 样式应用于列表中,我们不需要拼出整个 InsetGroupedListStyle 名称,而是可以简单地将其称为 .insetGrouped

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List(viewModel.articles) { article in             ...         }         .listStyle(.insetGrouped)     } }

这样的改变还是非常好的,可以让我们的开发更加方便,阅读时感觉更加自然。

元素绑定和自定义滑动操作

接下来,让我们看看如何将完全自定义的滑动操作添加到列表中。 为了演示这种情况,我们在 List 中嵌套一个 ForEach (因为在 SwiftUI 的中,列表变化一版都是由 ForEach 触发的,而不是由 List 触发的)。 然后,让我们使用另一个新功能,集合元素绑定,让系统自动为我们的 articles 数组中的每个元素创建一个可变绑定:

struct ArticleList: View {     @ObservedObject var viewModel: ArticleListViewModel      var body: some View {         List {             ForEach($viewModel.articles) { $article in                 ...             }         }         .listStyle(.insetGrouped)     } }

注意:关于上述创建集合元素绑定的新方法,即使我们的应用程序在较旧的操作系统版本上运行,也是没有问题的。 完全向后兼容!

由于每个 article 值在 ForEach 闭包中都是可变的,我们可以使用新的 swipeActions 修饰符来实现每个 NavigationLink 项目视图的自定义滑动操作。 在这种情况下,用户可以轻松的在项目视图上滑动来决定喜不喜欢对应的文章:

“`swift
struct ArticleList: View {
@ObservedObject var viewModel: ArticleListViewModel

var body: some View {     List {         ForEach($viewModel.articles) { $article in             NavigationLink(                 ...             )             .swipeActions {                 Button(                     action: {                         article.isFavorite.toggle()                     },                     label: {                         if article.isFavorite {                             Label("Remove from favorites",                                 systemImage: "star.slash"                             )                         } else {                             Label("Add to favorites",                                 systemImage: "star"                             )                         }

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 如何让 SwiftUI 的列表变得更加灵活求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们