第67天 项目 13 第六部分
这是一个颇具难度的项目,主要原因在于,一旦引入Core Image,我们就必须应对苹果旧框架的各种特性和复杂性。
无论你是否愿意,在可预见的未来,你都需要了解苹果的旧框架,因为它们不会消失。要知道,目前存在着数亿行未使用SwiftUI编写的代码,如果你打算找到一份开发iOS应用的工作,那么总有一天你需要拓宽自己的知识面。
今天是挑战日,因此你需要阅读总结章节、完成该项目的测试,然后完成三个挑战。正如宇航员约翰·杨所说:“进步最大的敌人是知识的幻觉”——与其现在假定自己无所不知,日后却发现那些你“懂”的东西并不完全正确,不如现在就花时间挑战自己!
今天,你应该学习Instafilter项目的总结章节,完成相关复习,然后攻克所有三个挑战。
- Instafilter 项目总结
- Instafilter 项目复习
Instafilter:总结
作者:Paul Hudson 2023年12月12日
在本教程中,我们涵盖了大量内容,尤其是学习了如何借助Core Image这类功能强大的框架来实现令人印象深刻的图形效果。诚然,它并未完全平稳地过渡到Swift环境——若想充分利用它,你需要了解它的特性。不过,现在你已经度过了最艰难的部分,希望你能尝试在自己的代码中运用它!
与此同时,我们还学习了许多实用的SwiftUI知识,包括确认对话框、onChange()修饰符、ContentUnavailableView以及App Store评分功能,这些功能都极为常用,并且在未来多年内仍将发挥重要作用。
复习所学内容
任何人都能看完一门教程,但要记住所学知识则需要切实的努力。确保你能从这些教程中收获尽可能多的知识,这是我的职责,完成后面的练习题可以帮助你检验自己的学习成果。
挑战
学习编程的最佳方式之一就是尽可能频繁地编写自己的代码,因此我为你准备了三种扩展该应用的方式,以确保你能完全理解其中的原理。
- 尝试实现:若未选择图像,则禁用滑块(Slider)和“更改滤镜”(Change Filter)按钮。
- 进行实验:使用多个滑块,分别控制你关注的每个输入键。例如,你可以用一个滑块控制半径(radius),另一个控制强度(intensity)。
- 深入探索:了解可用的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:
UIImage和CIImage是相同的。
问题10/12:以下哪些陈述是正确的?
- 选项1: Core Image允许我们对图像应用图形滤镜。
- 选项2: Core Image是SwiftUI的一部分。
问题11/12:以下哪些陈述是正确的?
- 选项1: 为按钮提供
action参数,即可指定按钮被点击时要执行的代码。 - 选项2: 用户安装应用后,应尽快请求其进行App Store评分。
问题12/12:以下哪些陈述是正确的?
- 选项1: 建议创建一个
CIContext并重复使用它。 - 选项2:
ShareLink只能分享文本、URL和图像,无法分享其他内容。