Skip to content

第67天 项目 13 第六部分

这是一个颇具难度的项目,主要原因在于,一旦引入Core Image,我们就必须应对苹果旧框架的各种特性和复杂性。

无论你是否愿意,在可预见的未来,你都需要了解苹果的旧框架,因为它们不会消失。要知道,目前存在着数亿行未使用SwiftUI编写的代码,如果你打算找到一份开发iOS应用的工作,那么总有一天你需要拓宽自己的知识面。

今天是挑战日,因此你需要阅读总结章节、完成该项目的测试,然后完成三个挑战。正如宇航员约翰·杨所说:“进步最大的敌人是知识的幻觉”——与其现在假定自己无所不知,日后却发现那些你“懂”的东西并不完全正确,不如现在就花时间挑战自己!

今天,你应该学习Instafilter项目的总结章节,完成相关复习,然后攻克所有三个挑战。

  • Instafilter 项目总结
  • Instafilter 项目复习

Instafilter:总结

作者:Paul Hudson 2023年12月12日

在本教程中,我们涵盖了大量内容,尤其是学习了如何借助Core Image这类功能强大的框架来实现令人印象深刻的图形效果。诚然,它并未完全平稳地过渡到Swift环境——若想充分利用它,你需要了解它的特性。不过,现在你已经度过了最艰难的部分,希望你能尝试在自己的代码中运用它!

与此同时,我们还学习了许多实用的SwiftUI知识,包括确认对话框、onChange()修饰符、ContentUnavailableView以及App Store评分功能,这些功能都极为常用,并且在未来多年内仍将发挥重要作用。

复习所学内容

任何人都能看完一门教程,但要记住所学知识则需要切实的努力。确保你能从这些教程中收获尽可能多的知识,这是我的职责,完成后面的练习题可以帮助你检验自己的学习成果。

挑战

学习编程的最佳方式之一就是尽可能频繁地编写自己的代码,因此我为你准备了三种扩展该应用的方式,以确保你能完全理解其中的原理。

  1. 尝试实现:若未选择图像,则禁用滑块(Slider)和“更改滤镜”(Change Filter)按钮。
  2. 进行实验:使用多个滑块,分别控制你关注的每个输入键。例如,你可以用一个滑块控制半径(radius),另一个控制强度(intensity)。
  3. 深入探索:了解可用的Core Image滤镜范围,并选择任意三种添加到应用中。

提示:最后一个挑战可能比你想象的要难一些。为什么呢?或许你可以先思考10秒钟!

【练习题】Instafilter

问题1/12:以下哪些陈述是正确的?

  • 选项1: 当等待用户创建或输入某些数据时,ContentUnavailableView是理想的选择。
  • 选项2: 当用户必须立即做出选择时,ContentUnavailableView是理想的选择。

问题2/12:以下哪些陈述是正确的?

  • 选项1: 我们可以将可选视图直接放入SwiftUI视图层级结构中。
  • 选项2: 使用onChange()时,必须指定一个绑定,让SwiftUI监听对应的值。

问题3/12:以下哪些陈述是正确的?

  • 选项1: 加载视频需使用VideosPicker,而非PhotosPicker
  • 选项2: 确认对话框可以包含标题和/或消息。

问题4/12:以下哪些陈述是正确的?

  • 选项1: 我们可以使用PhotosPicker让用户从其图库中选择照片。
  • 选项2: 可以通过属性观察器检测@State属性的变化。

问题5/12:以下哪些陈述是正确的?

  • 选项1: 所有Core Image滤镜都支持相同范围的输入键。
  • 选项2: 将某些内容附加到ShareLink后,可通过所有支持该内容的应用分享该内容。

问题6/12:以下哪些陈述是正确的?

  • 选项1:PhotosPickerItem加载数据可能需要几秒钟时间。
  • 选项2: 不能将SwiftUI视图创建为@State属性。

问题7/12:以下哪些陈述是正确的?

  • 选项1: PhotosPicker来自PhotosUI框架。
  • 选项2: 警告框(Alert)和确认对话框在iPhone上的显示效果相同。

问题8/12:以下哪些陈述是正确的?

  • 选项1: 我们可以将SwiftUI的Image视图直接传入Core Image。
  • 选项2: onChange()无需附加到特定视图上。

问题9/12:以下哪些陈述是正确的?

  • 选项1: 确认对话框可以比警告框包含更多按钮。
  • 选项2: UIImageCIImage是相同的。

问题10/12:以下哪些陈述是正确的?

  • 选项1: Core Image允许我们对图像应用图形滤镜。
  • 选项2: Core Image是SwiftUI的一部分。

问题11/12:以下哪些陈述是正确的?

  • 选项1: 为按钮提供action参数,即可指定按钮被点击时要执行的代码。
  • 选项2: 用户安装应用后,应尽快请求其进行App Store评分。

问题12/12:以下哪些陈述是正确的?

  • 选项1: 建议创建一个CIContext并重复使用它。
  • 选项2: ShareLink只能分享文本、URL和图像,无法分享其他内容。

本站使用 VitePress 制作