Hacking with iOS: SwiftUI Edition

Hacking with iOS: SwiftUI Edition_第1张图片

本系列课程来自Hacking with iOS: SwiftUI Edition,学习的同时,记录于此,希望更多人能够好好学习,天天向上!

【持续更新中。。。】

项目 1: WeSplit

通过第一个项目学习SwiftUI的基础知识

概览

  • 解SwiftUI APP的基本结构

  • 创建表单

  • 添加导航栏

  • 修改程序状态

  • 将状态绑定到UI控件

  • 在循环中创建视图

实现

  • WeSplit 项目

挑战

  • WeSplit 挑战

项目 2: Guess the Flag 猜国旗

使用 stacks, images, 和 alerts开发一个游戏

概览

  • 颜色和视图位置

  • 渐变色

  • 按钮和图片

  • Alert弹窗

实现

  • 猜国旗项目

挑战

  • 猜国旗项目 挑战

项目 3: Views and Modifiers 视图和修饰符

深入研究Swift的渲染系统

概览

  • 视图和修饰符项目——引言

概念

  • 为什么SwiftUI的视图使用结构体?

  • SwiftUI视图的背后是什么?

  • 为什么SwiftUI的修饰符顺序很重要?

  • 为什么SwiftUI使用 some View 作为视图类型?

高级用法

  • 条件修饰符

  • 环境修饰符

  • 将视图作为属性

  • 视图拆分与组合

  • 自定义修饰符

  • 自定义容器

挑战

  • 视图和修饰符项目——挑战

里程碑 1

  • 里程碑:项目 1 - 3

Project 4: BetterRest

使用机器学习改善睡眠

概览

  • 使用 Stepper 输入数字

  • 使用 DatePicker 选择日期和时间

  • 使用日期

  • 用Create ML训练模型

实现

  • BetterRest 项目

挑战

  • BetterRest 项目——挑战

Project 5: Word Scramble

用列表构建字母排列游戏

概览

  • Word Scramble 项目——List 介绍

  • Word Scramble 项目——从App Bundle中加载资源文件

  • Word Scramble 项目——使用字符串

实现

  • Word Scramble 项目

挑战

  • Word Scramble 项目——挑战

Project 6: Animation

用动画来美化用户界面

概览

  • SwiftUI:创建隐式动画

基础

  • SwiftUI:创建隐式动画

  • 在SwiftUI中自定义动画

  • SwiftUI:动画绑定

  • SwiftUI:创建显式动画

高级用法

  • SwiftUI:控制动画堆栈

  • SwiftUI:动画手势

  • SwiftUI:视图的显示和隐藏动画

  • SwiftUI:使用ViewModifier生成自定义动画

里程碑 二

里程碑:项目4 - 6

Project 7: iExpense

使用此费用跟踪应用程序使我们进入多视图程序

概览

  • SwiftUI:为什么@State只适用于结构体
  • SwiftUI:使用@ObservedObject共享状态
  • SwiftUI:Sheet弹窗
  • SwiftUI:使用onDelete() 删除项目
  • SwiftUI:使用UserDefaults存储用户设置
  • 使用Codable归档Swift对象

实现

  • iExpense 项目

挑战

  • iExpense 项目挑战

Project 8: Moonshot

通过滚动视图,Codable等向用户介绍太空探索的历史

Overview

  • SwiftUI:使用GeometryReader调整图片大小以适应屏幕

  • SwiftUI:ScrollView如何让我们处理滚动数据

  • SwiftUI:使用NavigationLink将新视图压入堆栈

  • Swift:处理多级Codable数据

实现

Hacking with iOS: SwiftUI Edition - Moonshot 项目(一)
Hacking with iOS: SwiftUI Edition - Moonshot 项目(二)

挑战

  • Hacking with iOS: SwiftUI Edition - Moonshot 项目挑战

Project 9: 绘图 - Drawing

使用形状、路径、颜色等为应用程序创建自定义艺术

路径 - Paths 和 形状 - Shapes

  • SwiftUI:创建自定义路径 Path

  • SwiftUI:路径 Path vs 形状 Shape

  • SwiftUI:自定义 Shape 使用 InsettableShape 协议实现向内绘制边框

定制和性能

  • SwiftUI:使用 CGAffineTransform 和奇偶填充来变换形状

  • SwiftUI: 使用 ImagePaint 制作边框和填充

  • SwiftUI:启用高性能 Metal 渲染

特殊效果和动画

  • SwiftUI:特殊效果 - 模糊,混合模式,饱和度调整等

  • SwiftUI:使用 animatableData 给形状设置动画

  • SwiftUI:使用 AnimatablePair 对复杂形状进行动画处理

  • 使用SwiftUI创建万花尺

里程碑 三

里程碑:项目 7 - 9

Project 10: Cupcake Corner

构建一个可从互联网发送和接收JSON的应用

Overview

  • SwiftUI:为 @Published 属性添加 Codable 支持

  • SwiftUI:使用 URLSession 发送和接收 Codable 数据

  • SwiftUI:验证和禁用表单

Implementation

  • 纸杯蛋糕项目(一)
  • 纸杯蛋糕项目(二)

Challenges

  • 纸杯蛋糕项目——挑战

Project 11: 书虫 - Bookworm

使用Core Data构建可跟踪您喜欢的书的应用

Overview

  • SwiftUI:使用 @Binding 创建自定义组件

  • SwiftUI:使用 size classes 时通过 AnyView 实现类型擦除

  • 如何结合 Core Data 和 SwiftUI

Implementation

  • 书虫项目(一)
  • 书虫项目(二)

Challenges

  • 书虫项目——挑战

Project 12: Core Data

深入了解SwiftUI和Core Data如何协同工作

Basics

  • Core Data 项目——引言
  • SwiftUI Core Data:为什么 ForEach 可以使用 .self ?
  • SwiftUI Core Data:创建 NSManagedObject 子类
  • SwiftUI Core Data:有条件地保存 NSManagedObjectContext
  • SwiftUI Core Data:使用约束确保对象是唯一的

Advanced Techniques

  • SwiftUI Core Data:使用 NSPredicate 过滤 @FetchRequest
  • SwiftUI Core Data:动态过滤 @FetchRequest
  • SwiftUI Core Data:动态过滤 @FetchRequest 进阶
  • SwiftUI Core Data:一对多关系

Challenges

  • Core Data 项目——挑战

里程碑 四

里程碑:项目 10 - 12

Project 13: 滤镜项目 Instafilter

学习在一个应用程序中链接SwiftUI,UIKit 和 Core Image

Overview

  • 滤镜项目——引言

  • SwiftUI:属性包装器如何处理结构体

  • SwiftUI:创建自定义绑定

  • SwiftUI:ActionSheet 弹窗

  • SwiftUI:集成 Core Image

  • 在SwiftUI视图中包装UIViewController

  • 使用协调器管理SwiftUI视图控制器

  • SwiftUI:如何将图片保存到用户的照片库

Implementation

  • Hacking with iOS: SwiftUI Edition - 滤镜项目(一)

  • Customizing our filter using ActionSheet

  • Saving the filtered image using UIImageWriteToSavedPhotosAlbum()

Challenges

  • Instafilter: Wrap up

Project 14: Bucket List

Embed maps and make network calls in this life goals app

Overview

  • Bucket List: Introduction
  • Adding conformance to Comparable for custom types
  • Writing data to the documents directory
  • Switching view states with enums
  • Integrating MapKit with SwiftUI
  • Communicating with a MapKit coordinator
  • Using Touch ID and Face ID with SwiftUI

Implementation

  • Advanced MKMapView with SwiftUI
  • Customizing MKMapView annotations
  • Extending existing types to support ObservableObject
  • Downloading data from Wikipedia
  • Sorting Wikipedia results
  • Making someone else’s class conform to Codable
  • Locking our UI behind Face ID

Challenges

  • Bucket List: Wrap up

Project 15: Accessibility

Learn how to make your apps available to everyone

Overview

  • Accessibility: Introduction
  • Identifying views with useful labels
  • Hiding and grouping accessibility data
  • Reading the value of controls

Fixing Projects

  • Fixing Guess the Flag
  • Fixing Word Scramble
  • Fixing Bookworm

Challenges

  • Accessibility: Wrap up

Project 16: Hot Prospects

Build an app for conferences with tabs, context menus, and more.

Overview

  • Hot Prospects: Introduction
  • Reading custom values from the environment with @EnvironmentObject
  • Creating tabs with TabView and tabItem()
  • Understanding Swift’s Result type
  • Manually publishing ObservableObject changes
  • Controlling image interpolation in SwiftUI
  • Creating context menus
  • Scheduling local notifications
  • Adding Swift package dependencies in Xcode

Implementation

  • Building our tab bar
  • Sharing data across tabs using @EnvironmentObject
  • Dynamically filtering a SwiftUI List
  • Generating and scaling up a QR code
  • Scanning QR codes with SwiftUI
  • Adding options with a context menu
  • Saving and loading data with UserDefaults
  • Posting notifications to the lock screen

Challenges

  • Hot Prospects: Wrap up

Project 17: Flashzilla

Use gestures and haptics to build a learning app.

Overview

  • Flashzilla: Introduction
  • How to use gestures in SwiftUI
  • Making vibrations with UINotificationFeedbackGenerator and Core Haptics
  • Disabling user interactivity with allowsHitTesting()
  • Triggering events repeatedly using a timer
  • How to be notified when your SwiftUI app moves to the background
  • Supporting specific accessibility needs with SwiftUI

Implementation

  • Designing a single card view
  • Building a stack of cards
  • Moving views with DragGesture and offset()
  • Coloring views as we swipe
  • Counting down with a Timer
  • Ending the app with allowsHitTesting()
  • Making iPhones vibrate with UINotificationFeedbackGenerator
  • Fixing the bugs
  • Adding and deleting cards

Challenges

  • Flashzilla: Wrap up

Project 18: Layout and Geometry

Explore the inner workings of SwiftUI's layout system.

Positioning

  • Layout and geometry: Introduction
  • How layout works in SwiftUI
  • Alignment and alignment guides
  • How to create a custom alignment guide
  • Absolute positioning for SwiftUI views

GeometryReader

  • Understanding frames and coordinates inside GeometryReader
  • ScrollView effects using GeometryReader

Project 19: SnowSeeker

Build an app for ski resorts that works great on iPad.

Overview

  • SnowSeeker: Introduction
  • Working with two side by side views in SwiftUI
  • Using alert() and sheet() with optionals
  • Using groups as transparent layout containers

Implementation

  • Building a primary list of items
  • Making NavigationView work in landscape
  • Creating a secondary view for NavigationView
  • Changing a view’s layout in response to size classes
  • Binding an alert to an optional string
  • Letting the user mark favorites

Challenges

  • SnowSeeker: Wrap up

项目地址:

https://github.com/twostraws/HackingWithSwift

下载单个文件方法:

1. 打开终端
2. cd 到你想保存的文件夹 比如  cd Desktop/
3. 输入  
svn checkout https://github.com/twostraws/HackingWithSwift/trunk/SwiftUI/project5
4. 回车等待

你可能感兴趣的:(Hacking with iOS: SwiftUI Edition)