<p><span>This book will teach you the skills necessary to build iOS 16 applications using SwiftUI, Xcode 14, and the Swift 5.7 programming language.</span></p><p><span>Beginning with the basics, this book outlines the steps necessary to set up an iOS development environment, together with an introdu
iOS 16 App Development Essentials - UIKit Edition: Learn to Develop iOS 16 Apps with Xcode 14 and Swift
β Scribed by Neil Smyth
- Publisher
- Payload Media
- Year
- 2023
- Tongue
- English
- Leaves
- 761
- Category
- Library
No coin nor oath required. For personal study only.
β¦ Synopsis
This book aims to teach the skills necessary to create iOS apps using the iOS 16 SDK, UIKit, Xcode 14, and the Swift programming language.
Beginning with the basics, this book outlines the steps necessary to set up an iOS development environment. Next, an introduction to the architecture of iOS 16 and programming in Swift 5.7 is provided, followed by an in-depth look at the design of iOS apps and user interfaces. More advanced topics such as file handling, database management, graphics drawing, and animation are also covered, as are touch screen handling, gesture recognition, multitasking, location management, local notifications, camera access, and video playback support. Other features include Auto Layout, local map search, user interface animation using UIKit dynamics, Siri integration, iMessage app development, and biometric authentication.
Additional features of iOS development using Xcode are also covered, including Swift playgrounds, universal user interface design using size classes, app extensions, Interface Builder Live Views, embedded frameworks, collection and stack layouts, CloudKit data storage, and the document browser.
Other features of iOS 16 and Xcode 14 are also covered in detail, including iOS machine learning features.
The aim of this book, therefore, is to teach you the skills necessary to build your own apps for iOS 16. Assuming you are ready to download the iOS 16 SDK and Xcode 14, have a Mac, and some ideas for some apps to develop, you are ready to get started.
β¦ Table of Contents
- Start Here
1.1 Source Code Download
1.2 Feedback
1.3 Errata - Joining the Apple Developer Program
2.1 Downloading Xcode 14 and the iOS 16 SDK
2.2 Apple Developer Program
2.3 When to Enroll in the Apple Developer Program?
2.4 Enrolling in the Apple Developer Program
2.5 Summary - Installing Xcode 14 and the iOS 16 SDK
3.1 Identifying Your macOS Version
3.2 Installing Xcode 14 and the iOS 16 SDK
3.3 Starting Xcode
3.4 Adding Your Apple ID to the Xcode Preferences
3.5 Developer and Distribution Signing Identities - A Guided Tour of Xcode 14
4.1 Starting Xcode 14
4.2 Creating the iOS App User Interface
4.3 Changing Component Properties
4.4 Adding Objects to the User Interface
4.5 Building and Running an iOS App in Xcode
4.6 Running the App on a Physical iOS Device
4.7 Managing Devices and Simulators
4.8 Enabling Network Testing
4.9 Dealing with Build Errors
4.10 Monitoring Application Performance
4.11 Exploring the User Interface Layout Hierarchy
4.12 Summary - An Introduction to Xcode 14 Playgrounds
5.1 What is a Playground?
5.2 Creating a New Playground
5.3 A Swift Playground Example
5.4 Viewing Results
5.5 Adding Rich Text Comments
5.6 Working with Playground Pages
5.7 Working with UIKit in Playgrounds
5.8 Adding Resources to a Playground
5.9 Working with Enhanced Live Views
5.10 When to Use Playgrounds
5.11 Summary - Swift Data Types, Constants and Variables
6.1 Using a Swift Playground
6.2 Swift Data Types
6.2.1 Integer Data Types
6.2.2 Floating Point Data Types
6.2.3 Bool Data Type
6.2.4 Character Data Type
6.2.5 String Data Type
6.2.6 Special Characters/Escape Sequences
6.3 Swift Variables
6.4 Swift Constants
6.5 Declaring Constants and Variables
6.6 Type Annotations and Type Inference
6.7 The Swift Tuple
6.8 The Swift Optional Type
6.9 Type Casting and Type Checking
6.10 Summary - Swift Operators and Expressions
7.1 Expression Syntax in Swift
7.2 The Basic Assignment Operator
7.3 Swift Arithmetic Operators
7.4 Compound Assignment Operators
7.5 Comparison Operators
7.6 Boolean Logical Operators
7.7 Range Operators
7.8 The Ternary Operator
7.9 Nil Coalescing Operator
7.10 Bitwise Operators
7.10.1 Bitwise NOT
7.10.2 Bitwise AND
7.10.3 Bitwise OR
7.10.4 Bitwise XOR
7.10.5 Bitwise Left Shift
7.10.6 Bitwise Right Shift
7.11 Compound Bitwise Operators
7.12 Summary - Swift Control Flow
8.1 Looping Control Flow
8.2 The Swift for-in Statement
8.2.1 The while Loop
8.3 The repeat ... while loop
8.4 Breaking from Loops
8.5 The continue Statement
8.6 Conditional Control Flow
8.7 Using the if Statement
8.8 Using if ... else β¦ Statements
8.9 Using if ... else if ... Statements
8.10 The guard Statement
8.11 Summary - The Swift Switch Statement
9.1 Why Use a switch Statement?
9.2 Using the switch Statement Syntax
9.3 A Swift switch Statement Example
9.4 Combining case Statements
9.5 Range Matching in a switch Statement
9.6 Using the where statement
9.7 Fallthrough
9.8 Summary - Swift Functions, Methods and Closures
10.1 What is a Function?
10.2 What is a Method?
10.3 How to Declare a Swift Function
10.4 Implicit Returns from Single Expressions
10.5 Calling a Swift Function
10.6 Handling Return Values
10.7 Local and External Parameter Names
10.8 Declaring Default Function Parameters
10.9 Returning Multiple Results from a Function
10.10 Variable Numbers of Function Parameters
10.11 Parameters as Variables
10.12 Working with In-Out Parameters
10.13 Functions as Parameters
10.14 Closure Expressions
10.15 Shorthand Argument Names
10.16 Closures in Swift
10.17 Summary - The Basics of Swift Object-Oriented Programming
11.1 What is an Instance?
11.2 What is a Class?
11.3 Declaring a Swift Class
11.4 Adding Instance Properties to a Class
11.5 Defining Methods
11.6 Declaring and Initializing a Class Instance
11.7 Initializing and De-initializing a Class Instance
11.8 Calling Methods and Accessing Properties
11.9 Stored and Computed Properties
11.10 Lazy Stored Properties
11.11 Using self in Swift
11.12 Understanding Swift Protocols
11.13 Opaque Return Types
11.14 Summary - An Introduction to Swift Subclassing and Extensions
12.1 Inheritance, Classes and Subclasses
12.2 A Swift Inheritance Example
12.3 Extending the Functionality of a Subclass
12.4 Overriding Inherited Methods
12.5 Initializing the Subclass
12.6 Using the SavingsAccount Class
12.7 Swift Class Extensions
12.8 Summary - Working with Array and Dictionary Collections in Swift
13.1 Mutable and Immutable Collections
13.2 Swift Array Initialization
13.3 Working with Arrays in Swift
13.3.1 Array Item Count
13.3.2 Accessing Array Items
13.3.3 Random Items and Shuffling
13.3.4 Appending Items to an Array
13.3.5 Inserting and Deleting Array Items
13.3.6 Array Iteration
13.4 Creating Mixed Type Arrays
13.5 Swift Dictionary Collections
13.6 Swift Dictionary Initialization
13.7 Sequence-based Dictionary Initialization
13.8 Dictionary Item Count
13.9 Accessing and Updating Dictionary Items
13.10 Adding and Removing Dictionary Entries
13.11 Dictionary Iteration
13.12 Summary - Understanding Error Handling in Swift 5
14.1 Understanding Error Handling
14.2 Declaring Error Types
14.3 Throwing an Error
14.4 Calling Throwing Methods and Functions
14.5 Accessing the Error Object
14.6 Disabling Error Catching
14.7 Using the defer Statement
14.8 Summary - The iOS 16 App and Development Architecture
15.1 An Overview of the iOS 16 Operating System Architecture
15.2 Model View Controller (MVC)
15.3 The Target-Action pattern, IBOutlets, and IBActions
15.4 Subclassing
15.5 Delegation
15.6 Summary - Creating an Interactive iOS 16 App
16.1 Creating the New Project
16.2 Creating the User Interface
16.3 Building and Running the Sample App
16.4 Adding Actions and Outlets
16.5 Building and Running the Finished App
16.6 Hiding the Keyboard
16.7 Summary - Understanding iOS 16 Views, Windows, and the View Hierarchy
17.1 An Overview of Views and the UIKit Class Hierarchy
17.2 The UIWindow Class
17.3 The View Hierarchy
17.4 Viewing Hierarchy Ancestors in Interface Builder
17.5 View Types
17.5.1 The Window
17.5.2 Container Views
17.5.3 Controls
17.5.4 Display Views
17.5.5 Text and WebKit Views
17.5.6 Navigation Views and Tab Bars
17.5.7 Alert Views
17.6 Summary - An Introduction to Auto Layout in iOS 16
18.1 An Overview of Auto Layout
18.2 Alignment Rects
18.3 Intrinsic Content Size
18.4 Content Hugging and Compression Resistance Priorities
18.5 Safe Area Layout Guide
18.6 Three Ways to Create Constraints
18.7 Constraints in More Detail
18.8 Summary - Working with iOS 16 Auto Layout Constraints in Interface Builder
19.1 An Example of Auto Layout in Action
19.2 Working with Constraints
19.3 The Auto Layout Features of Interface Builder
19.3.1 Suggested Constraints
19.3.2 Visual Cues
19.3.3 Highlighting Constraint Problems
19.3.4 Viewing, Editing, and Deleting Constraints
19.4 Creating New Constraints in Interface Builder
19.5 Adding Aspect Ratio Constraints
19.6 Resolving Auto Layout Problems
19.7 Summary - Implementing iOS 16 Auto Layout Constraints in Code
20.1 Creating Constraints Using NSLayoutConstraint
20.2 Adding a Constraint to a View
20.3 Turning off Auto Resizing Translation
20.4 Creating Constraints Using NSLayoutAnchor
20.5 An Example App
20.6 Creating the Views
20.7 Creating and Adding the Constraints
20.8 Using Layout Anchors
20.9 Removing Constraints
20.10 Summary - Implementing Cross-Hierarchy Auto Layout Constraints in iOS 16
21.1 The Example App
21.2 Establishing Outlets
21.3 Writing the Code to Remove the Old Constraint
21.4 Adding the Cross Hierarchy Constraint
21.5 Testing the App
21.6 Summary - Understanding the iOS 16 Auto Layout Visual Format Language
22.1 Introducing the Visual Format Language
22.2 Visual Format Language Examples
22.3 Using the constraints(withVisualFormat:) Method
22.4 Summary - Using Trait Variations to Design Adaptive iOS 16 User Interfaces
23.1 Understanding Traits and Size Classes
23.2 Size Classes in Interface Builder
23.3 Enabling Trait Variations
23.4 Setting βAnyβ Defaults
23.5 Working with Trait Variations in Interface Builder
23.6 Attributes Inspector Trait Variations
23.7 Using Constraint Variations
23.8 An Adaptive User Interface Tutorial
23.9 Designing the Initial Layout
23.10 Adding Universal Image Assets
23.11 Increasing Font Size for iPad Devices
23.12 Adding Width Constraint Variations
23.13 Testing the Adaptivity
23.14 Summary - Using Storyboards in Xcode 14
24.1 Creating the Storyboard Example Project
24.2 Accessing the Storyboard
24.3 Adding Scenes to the Storyboard
24.4 Configuring Storyboard Segues
24.5 Configuring Storyboard Transitions
24.6 Associating a View Controller with a Scene
24.7 Passing Data Between Scenes
24.8 Unwinding Storyboard Segues
24.9 Triggering a Storyboard Segue Programmatically
24.10 Summary - Organizing Scenes over Multiple Storyboard Files
25.1 Organizing Scenes into Multiple Storyboards
25.2 Establishing a Connection between Different Storyboards
25.3 Summary - Using Xcode 14 Storyboards to Create an iOS 16 Tab Bar App
26.1 An Overview of the Tab Bar
26.2 Understanding View Controllers in a Multiview App
26.3 Setting up the Tab Bar Example App
26.4 Reviewing the Project Files
26.5 Adding the View Controllers for the Content Views
26.6 Adding the Tab Bar Controller to the Storyboard
26.7 Designing the View Controller User interfaces
26.8 Configuring the Tab Bar Items
26.9 Building and Running the App
26.10 Summary - An Overview of iOS 16 Table Views and Xcode 14 Storyboards
27.1 An Overview of the Table View
27.2 Static vs. Dynamic Table Views
27.3 The Table View Delegate and dataSource
27.4 Table View Styles
27.5 Self-Sizing Table Cells
27.6 Dynamic Type
27.7 Table View Cell Styles
27.8 Table View Cell Reuse
27.9 Table View Swipe Actions
27.10 Summary - Using Xcode 14 Storyboards to Build Dynamic TableViews
28.1 Creating the Example Project
28.2 Adding the TableView Controller to the Storyboard
28.3 Creating the UITableViewController and UITableViewCell Subclasses
28.4 Declaring the Cell Reuse Identifier
28.5 Designing a Storyboard UITableView Prototype Cell
28.6 Modifying the AttractionTableViewCell Class
28.7 Creating the Table View Datasource
28.8 Downloading and Adding the Image Files
28.9 Compiling and Running the App
28.10 Handling TableView Swipe Gestures
28.11 Summary - Implementing iOS 16 TableView Navigation using Storyboards
29.1 Understanding the Navigation Controller
29.2 Adding the New Scene to the Storyboard
29.3 Adding a Navigation Controller
29.4 Establishing the Storyboard Segue
29.5 Modifying the AttractionDetailViewController Class
29.6 Using prepare(for segue:) to Pass Data between Storyboard Scenes
29.7 Testing the App
29.8 Customizing the Navigation Title Size
29.9 Summary - Integrating Search using the iOS UISearchController
30.1 Introducing the UISearchController Class
30.2 Adding a Search Controller to the TableViewStory Project
30.3 Implementing the updateSearchResults Method
30.4 Reporting the Number of Table Rows
30.5 Modifying the cellForRowAt Method
30.6 Modifying the Trailing Swipe Delegate Method
30.7 Modifying the Detail Segue
30.8 Handling the Search Cancel Button
30.9 Testing the Search Controller
30.10 Summary - Working with the iOS 16 Stack View Class
31.1 Introducing the UIStackView Class
31.2 Understanding Subviews and Arranged Subviews
31.3 StackView Configuration Options
31.3.1 axis
31.3.2 distribution
31.3.3 spacing
31.3.4 alignment
31.3.5 baseLineRelativeArrangement
31.3.6 layoutMarginsRelativeArrangement
31.4 Creating a Stack View in Code
31.5 Adding Subviews to an Existing Stack View
31.6 Hiding and Removing Subviews
31.7 Summary - An iOS 16 Stack View Tutorial
32.1 About the Stack View Example App
32.2 Creating the First Stack View
32.3 Creating the Banner Stack View
32.4 Adding the Switch Stack Views
32.5 Creating the Top-Level Stack View
32.6 Adding the Button Stack View
32.7 Adding the Final Subviews to the Top Level Stack View
32.8 Dynamically Adding and Removing Subviews
32.9 Summary - A Guide to iPad Multitasking
33.1 Using iPad Multitasking
33.2 Picture-In-Picture Multitasking
33.3 Multitasking and Size Classes
33.4 Handling Multitasking in Code
33.4.1 willTransition(to newcollection: with coordinator:)
33.4.2 viewWillTransition(to size: with coordinator:)
33.4.3 traitCollectionDidChange(_:)
33.5 Lifecycle Method Calls
33.6 Opting Out of Multitasking
33.7 Summary - An iPadOS Multitasking Example
34.1 Creating the Multitasking Example Project
34.2 Adding the Image Files
34.3 Designing the Regular Width Size Class Layout
34.4 Designing the Compact Width Size Class
34.5 Testing the Project in a Multitasking Environment
34.6 Summary - An Overview of Swift Structured Concurrency
35.1 An Overview of Threads
35.2 The Application Main Thread
35.3 Completion Handlers
35.4 Structured Concurrency
35.5 Preparing the Project
35.6 Non-Concurrent Code
35.7 Introducing async/await Concurrency
35.8 Asynchronous Calls from Synchronous Functions
35.9 The await Keyword
35.10 Using async-let Bindings
35.11 Handling Errors
35.12 Understanding Tasks
35.13 Unstructured Concurrency
35.14 Detached Tasks
35.15 Task Management
35.16 Working with Task Groups
35.17 Avoiding Data Races
35.18 The for-await Loop
35.19 Asynchronous Properties
35.20 Summary - Working with Directories in Swift on iOS 16
36.1 The Application Documents Directory
36.2 The FileManager, FileHandle, and Data Classes
36.3 Understanding Pathnames in Swift
36.4 Obtaining a Reference to the Default FileManager Object
36.5 Identifying the Current Working Directory
36.6 Identifying the Documents Directory
36.7 Identifying the Temporary Directory
36.8 Changing Directory
36.9 Creating a New Directory
36.10 Deleting a Directory
36.11 Listing the Contents of a Directory
36.12 Getting the Attributes of a File or Directory
36.13 Summary - Working with Files in Swift on iOS 16
37.1 Obtaining a FileManager Instance Reference
37.2 Checking for the Existence of a File
37.3 Comparing the Contents of Two Files
37.4 Checking if a File is Readable/Writable/Executable/Deletable
37.5 Moving/Renaming a File
37.6 Copying a File
37.7 Removing a File
37.8 Creating a Symbolic Link
37.9 Reading and Writing Files with FileManager
37.10 Working with Files using the FileHandle Class
37.11 Creating a FileHandle Object
37.12 FileHandle File Offsets and Seeking
37.13 Reading Data from a File
37.14 Writing Data to a File
37.15 Truncating a File
37.16 Summary - iOS 16 Directory Handling and File I/O in Swift β A Worked Example
38.1 The Example App
38.2 Setting up the App Project
38.3 Designing the User Interface
38.4 Checking the Data File on App Startup
38.5 Implementing the Action Method
38.6 Building and Running the Example
38.7 Summary - Preparing an iOS 16 App to use iCloud Storage
39.1 iCloud Data Storage Services
39.2 Preparing an App to Use iCloud Storage
39.3 Enabling iCloud Support for an iOS 16 App
39.4 Reviewing the iCloud Entitlements File
39.5 Accessing Multiple Ubiquity Containers
39.6 Ubiquity Container URLs
39.7 Summary - Managing Files using the iOS 16 UIDocument Class
40.1 An Overview of the UIDocument Class
40.2 Subclassing the UIDocument Class
40.3 Conflict Resolution and Document States
40.4 The UIDocument Example App
40.5 Creating a UIDocument Subclass
40.6 Designing the User Interface
40.7 Implementing the App Data Structure
40.8 Implementing the contents(forType:) Method
40.9 Implementing the load(fromContents:) Method
40.10 Loading the Document at App Launch
40.11 Saving Content to the Document
40.12 Testing the App
40.13 Summary - Using iCloud Storage in an iOS 16 App
41.1 iCloud Usage Guidelines
41.2 Preparing the iCloudStore App for iCloud Access
41.3 Enabling iCloud Capabilities and Services
41.4 Configuring the View Controller
41.5 Implementing the loadFile Method
41.6 Implementing the metadataQueryDidFinishGathering Method
41.7 Implementing the saveDocument Method
41.8 Enabling iCloud Document and Data Storage
41.9 Running the iCloud App
41.10 Making a Local File Ubiquitous
41.11 Summary - Using iCloud Drive Storage in an iOS 16 App
42.1 Preparing an App to use iCloud Drive Storage
42.2 Making Changes to the NSUbiquitousContainers Key
42.3 Creating the iCloud Drive Example Project
42.4 Modifying the Info.plist File
42.5 Designing the User Interface
42.6 Accessing the Ubiquitous Container
42.7 Saving the File to iCloud Drive
42.8 Testing the App
42.9 Summary - An Overview of the iOS 16 Document Browser View Controller
43.1 An Overview of the Document Browser View Controller
43.2 The Anatomy of a Document-Based App
43.3 Document Browser Project Settings
43.4 The Document Browser Delegate Methods
43.4.1 didRequestDocumentCreationWithHandler
43.4.2 didImportDocumentAt
43.4.3 didPickDocumentURLs
43.4.4 failedToImportDocumentAt
43.5 Customizing the Document Browser
43.6 Adding Browser Actions
43.7 Summary - An iOS 16 Document Browser Tutorial
44.1 Creating the DocumentBrowser Project
44.2 Declaring the Supported File Types
44.3 Completing the didRequestDocumentCreationWithHandler Method
44.4 Finishing the UIDocument Subclass
44.5 Modifying the Document View Controller
44.6 Testing the Document Browser App
44.7 Summary - Synchronizing iOS 16 Key-Value Data using iCloud
45.1 An Overview of iCloud Key-Value Data Storage
45.2 Sharing Data Between Apps
45.3 Data Storage Restrictions
45.4 Conflict Resolution
45.5 Receiving Notification of Key-Value Changes
45.6 An iCloud Key-Value Data Storage Example
45.7 Enabling the App for iCloud Key-Value Data Storage
45.8 Designing the User Interface
45.9 Implementing the View Controller
45.10 Modifying the viewDidLoad Method
45.11 Implementing the Notification Method
45.12 Implementing the saveData Method
45.13 Testing the App
45.14 Summary - iOS 16 Database Implementation using SQLite
46.1 What is SQLite?
46.2 Structured Query Language (SQL)
46.3 Trying SQLite on macOS
46.4 Preparing an iOS App Project for SQLite Integration
46.5 SQLite, Swift, and Wrappers
46.6 Key FMDB Classes
46.7 Creating and Opening a Database
46.8 Creating a Database Table
46.9 Extracting Data from a Database Table
46.10 Closing an SQLite Database
46.11 Summary - An Example SQLite-based iOS 16 App using Swift and FMDB
47.1 About the Example SQLite App
47.2 Creating and Preparing the SQLite App Project
47.3 Checking Out the FMDB Source Code
47.4 Designing the User Interface
47.5 Creating the Database and Table
47.6 Implementing the Code to Save Data to the SQLite Database
47.7 Implementing Code to Extract Data from the SQLite Database
47.8 Building and Running the App
47.9 Summary - Working with iOS 16 Databases using Core Data
48.1 The Core Data Stack
48.2 Persistent Container
48.3 Managed Objects
48.4 Managed Object Context
48.5 Managed Object Model
48.6 Persistent Store Coordinator
48.7 Persistent Object Store
48.8 Defining an Entity Description
48.9 Initializing the Persistent Container
48.10 Obtaining the Managed Object Context
48.11 Getting an Entity Description
48.12 Setting the Attributes of a Managed Object
48.13 Saving a Managed Object
48.14 Fetching Managed Objects
48.15 Retrieving Managed Objects based on Criteria
48.16 Accessing the Data in a Retrieved Managed Object
48.17 Summary - An iOS 16 Core Data Tutorial
49.1 The Core Data Example App
49.2 Creating a Core Data-based App
49.3 Creating the Entity Description
49.4 Designing the User Interface
49.5 Initializing the Persistent Container
49.6 Saving Data to the Persistent Store using Core Data
49.7 Retrieving Data from the Persistent Store using Core Data
49.8 Building and Running the Example App
49.9 Summary - An Introduction to CloudKit Data Storage on iOS 16
50.1 An Overview of CloudKit
50.2 CloudKit Containers
50.3 CloudKit Public Database
50.4 CloudKit Private Databases
50.5 Data Storage and Transfer Quotas
50.6 CloudKit Records
50.7 CloudKit Record IDs
50.8 CloudKit References
50.9 CloudKit Assets
50.10 Record Zones
50.11 CloudKit Sharing
50.12 CloudKit Subscriptions
50.13 Obtaining iCloud User Information
50.14 CloudKit Console
50.15 Summary - An iOS 16 CloudKit Example
51.1 About the Example CloudKit Project
51.2 Creating the CloudKit Example Project
51.3 Designing the User Interface
51.4 Establishing Outlets and Actions
51.5 Implementing the notifyUser Method
51.6 Accessing the Private Database
51.7 Hiding the Keyboard
51.8 Implementing the selectPhoto method
51.9 Saving a Record to the Cloud Database
51.10 Testing the Record Saving Method
51.11 Reviewing the Saved Data in the CloudKit Console
51.12 Searching for Cloud Database Records
51.13 Updating Cloud Database Records
51.14 Deleting a Cloud Record
51.15 Testing the App
51.16 Summary - An Overview of iOS 16 Multitouch, Taps, and Gestures
52.1 The Responder Chain
52.2 Forwarding an Event to the Next Responder
52.3 Gestures
52.4 Taps
52.5 Touches
52.6 Touch Notification Methods
52.6.1 touchesBegan method
52.6.2 touchesMoved method
52.6.3 touchesEnded method
52.6.4 touchesCancelled method
52.7 Touch Prediction
52.8 Touch Coalescing
52.9 Summary - An Example iOS 16 Touch, Multitouch, and Tap App
53.1 The Example iOS Tap and Touch App
53.2 Creating the Example iOS Touch Project
53.3 Designing the User Interface
53.4 Enabling Multitouch on the View
53.5 Implementing the touchesBegan Method
53.6 Implementing the touchesMoved Method
53.7 Implementing the touchesEnded Method
53.8 Getting the Coordinates of a Touch
53.9 Building and Running the Touch Example App
53.10 Checking for Touch Predictions
53.11 Accessing Coalesced Touches
53.12 Summary - Detecting iOS 16 Touch Screen Gesture Motions
54.1 The Example iOS 16 Gesture App
54.2 Creating the Example Project
54.3 Designing the App User Interface
54.4 Implementing the touchesBegan Method
54.5 Implementing the touchesMoved Method
54.6 Implementing the touchesEnded Method
54.7 Building and Running the Gesture Example
54.8 Summary - Identifying Gestures using iOS 16 Gesture Recognizers
55.1 The UIGestureRecognizer Class
55.2 Recognizer Action Messages
55.3 Discrete and Continuous Gestures
55.4 Obtaining Data from a Gesture
55.5 Recognizing Tap Gestures
55.6 Recognizing Pinch Gestures
55.7 Detecting Rotation Gestures
55.8 Recognizing Pan and Dragging Gestures
55.9 Recognizing Swipe Gestures
55.10 Recognizing Long Touch (Touch and Hold) Gestures
55.11 Summary - An iOS 16 Gesture Recognition Tutorial
56.1 Creating the Gesture Recognition Project
56.2 Designing the User Interface
56.3 Implementing the Action Methods
56.4 Testing the Gesture Recognition Application
56.5 Summary - Implementing Touch ID and Face ID Authentication in iOS 16 Apps
57.1 The Local Authentication Framework
57.2 Checking for Biometric Authentication Availability
57.3 Identifying Authentication Options
57.4 Evaluating Biometric Policy
57.5 A Biometric Authentication Example Project
57.6 Checking for Biometric Availability
57.7 Seeking Biometric Authentication
57.8 Adding the Face ID Privacy Statement
57.9 Testing the App
57.10 Summary - Drawing iOS 16 2D Graphics with Core Graphics
58.1 Introducing Core Graphics and Quartz 2D
58.2 The draw Method
58.3 Points, Coordinates, and Pixels
58.4 The Graphics Context
58.5 Working with Colors in Quartz 2D
58.6 Summary - Interface Builder Live Views and iOS 16 Embedded Frameworks
59.1 Embedded Frameworks
59.2 Interface Builder Live Views
59.3 Creating the Example Project
59.4 Adding an Embedded Framework
59.5 Implementing the Drawing Code in the Framework
59.6 Making the View Designable
59.7 Making Variables Inspectable
59.8 Summary - An iOS 16 Graphics Tutorial using Core Graphics and Core Image
60.1 The iOS Drawing Example App
60.2 Creating the New Project
60.3 Creating the UIView Subclass
60.4 Locating the draw Method in the UIView Subclass
60.5 Drawing a Line
60.6 Drawing Paths
60.7 Drawing a Rectangle
60.8 Drawing an Ellipse or Circle
60.9 Filling a Path with a Color
60.10 Drawing an Arc
60.11 Drawing a Cubic BΓ©zier Curve
60.12 Drawing a Quadratic BΓ©zier Curve
60.13 Dashed Line Drawing
60.14 Drawing Shadows
60.15 Drawing Gradients
60.16 Drawing an Image into a Graphics Context
60.17 Image Filtering with the Core Image Framework
60.18 Summary - iOS 16 Animation using UIViewPropertyAnimator
61.1 The Basics of UIKit Animation
61.2 Understanding Animation Curves
61.3 Performing Affine Transformations
61.4 Combining Transformations
61.5 Creating the Animation Example App
61.6 Implementing the Variables
61.7 Drawing in the UIView
61.8 Detecting Screen Touches and Performing the Animation
61.9 Building and Running the Animation App
61.10 Implementing Spring Timing
61.11 Summary - iOS 16 UIKit Dynamics β An Overview
62.1 Understanding UIKit Dynamics
62.2 The UIKit Dynamics Architecture
62.2.1 Dynamic Items
62.2.2 Dynamic Behaviors
62.2.3 The Reference View
62.2.4 The Dynamic Animator
62.3 Implementing UIKit Dynamics in an iOS App
62.4 Dynamic Animator Initialization
62.5 Configuring Gravity Behavior
62.6 Configuring Collision Behavior
62.7 Configuring Attachment Behavior
62.8 Configuring Snap Behavior
62.9 Configuring Push Behavior
62.10 The UIDynamicItemBehavior Class
62.11 Combining Behaviors to Create a Custom Behavior
62.12 Summary - An iOS 16 UIKit Dynamics Tutorial
63.1 Creating the UIKit Dynamics Example Project
63.2 Adding the Dynamic Items
63.3 Creating the Dynamic Animator Instance
63.4 Adding Gravity to the Views
63.5 Implementing Collision Behavior
63.6 Attaching a View to an Anchor Point
63.7 Implementing a Spring Attachment Between two Views
63.8 Summary - Integrating Maps into iOS 16 Apps using MKMapItem
64.1 MKMapItem and MKPlacemark Classes
64.2 An Introduction to Forward and Reverse Geocoding
64.3 Creating MKPlacemark Instances
64.4 Working with MKMapItem
64.5 MKMapItem Options and Configuring Directions
64.6 Adding Item Details to an MKMapItem
64.7 Summary - An Example iOS 16 MKMapItem App
65.1 Creating the MapItem Project
65.2 Designing the User Interface
65.3 Converting the Destination using Forward Geocoding
65.4 Launching the Map
65.5 Building and Running the App
65.6 Summary - Getting Location Information using the iOS 16 Core Location Framework
66.1 The Core Location Manager
66.2 Requesting Location Access Authorization
66.3 Configuring the Desired Location Accuracy
66.4 Configuring the Distance Filter
66.5 Continuous Background Location Updates
66.6 The Location Manager Delegate
66.7 Starting and Stopping Location Updates
66.8 Obtaining Location Information from CLLocation Objects
66.8.1 Longitude and Latitude
66.8.2 Accuracy
66.8.3 Altitude
66.9 Getting the Current Location
66.10 Calculating Distances
66.11 Summary - An Example iOS 16 Location App
67.1 Creating the Example iOS 16 Location Project
67.2 Designing the User Interface
67.3 Configuring the CLLocationManager Object
67.4 Setting up the Usage Description Keys
67.5 Implementing the startWhenInUse Method
67.6 Implementing the startAlways Method
67.7 Implementing the resetDistance Method
67.8 Implementing the App Delegate Methods
67.9 Building and Running the Location App
67.10 Adding Continuous Background Location Updates
67.11 Summary - Working with Maps on iOS 16 with MapKit and the MKMapView Class
68.1 About the MapKit Framework
68.2 Understanding Map Regions
68.3 Getting Transit ETA Information
68.4 About the MKMapView Tutorial
68.5 Creating the Map Project
68.6 Adding the Navigation Controller
68.7 Creating the MKMapView Instance and Toolbar
68.8 Obtaining Location Information Permission
68.9 Setting up the Usage Description Keys
68.10 Configuring the Map View
68.11 Changing the MapView Region
68.12 Changing the Map Type
68.13 Testing the MapView App
68.14 Updating the Map View based on User Movement
68.15 Summary - Working with MapKit Local Search in iOS 16
69.1 An Overview of iOS Local Search
69.2 Adding Local Search to the MapSample App
69.3 Adding the Local Search Text Field
69.4 Performing the Local Search
69.5 Testing the App
69.6 Customized Annotation Markers
69.7 Annotation Marker Clustering
69.8 Summary - Using MKDirections to get iOS 16 Map Directions and Routes
70.1 An Overview of MKDirections
70.2 Adding Directions and Routes to the MapSample App
70.3 Adding the New Classes to the Project
70.4 Configuring the Results Table View
70.5 Implementing the Result Table View Segue
70.6 Adding the Route Scene
70.7 Identifying the Userβs Current Location
70.8 Getting the Route and Directions
70.9 Establishing the Route Segue
70.10 Testing the App
70.11 Summary - Accessing the iOS 16 Camera and Photo Library
71.1 The UIImagePickerController Class
71.2 Creating and Configuring a UIImagePickerController Instance
71.3 Configuring the UIImagePickerController Delegate
71.4 Detecting Device Capabilities
71.5 Saving Movies and Images
71.6 Summary - An Example iOS 16 Camera App
72.1 An Overview of the App
72.2 Creating the Camera Project
72.3 Designing the User Interface
72.4 Implementing the Action Methods
72.5 Writing the Delegate Methods
72.6 Seeking Camera and Photo Library Access
72.7 Building and Running the App
72.8 Summary - iOS 16 Video Playback using AVPlayer and AVPlayerViewController
73.1 The AVPlayer and AVPlayerViewController Classes
73.2 The iOS Movie Player Example App
73.3 Designing the User Interface
73.4 Initializing Video Playback
73.5 Build and Run the App
73.6 Creating an AVPlayerViewController Instance from Code
73.7 Summary - An iOS 16 Multitasking Picture-in-Picture Tutorial
74.1 An Overview of Picture-in-Picture Multitasking
74.2 Adding Picture-in-Picture Support to the AVPlayerDemo App
74.3 Adding the Navigation Controller
74.4 Setting the Audio Session Category
74.5 Implementing the Delegate
74.6 Opting Out of Picture-in-Picture Support
74.7 Additional Delegate Methods
74.8 Summary - An Introduction to Extensions in iOS 16
75.1 iOS Extensions β An Overview
75.2 Extension Types
75.2.1 Share Extension
75.2.2 Action Extension
75.2.3 Photo Editing Extension
75.2.4 Document Provider Extension
75.2.5 Custom Keyboard Extension
75.2.6 Audio Unit Extension
75.2.7 Shared Links Extension
75.2.8 Content Blocking Extension
75.2.9 Sticker Pack Extension
75.2.10 iMessage Extension
75.2.11 Intents Extension
75.3 Creating Extensions
75.4 Summary - Creating an iOS 16 Photo Editing Extension
76.1 Creating a Photo Editing Extension
76.2 Accessing the Photo Editing Extension
76.3 Configuring the Info.plist File
76.4 Designing the User Interface
76.5 The PHContentEditingController Protocol
76.6 Photo Extensions and Adjustment Data
76.7 Receiving the Content
76.8 Implementing the Filter Actions
76.9 Returning the Image to the Photos App
76.10 Testing the App
76.11 Summary - Creating an iOS 16 Action Extension
77.1 An Overview of Action Extensions
77.2 About the Action Extension Example
77.3 Creating the Action Extension Project
77.4 Adding the Action Extension Target
77.5 Changing the Extension Display Name
77.6 Designing the Action Extension User Interface
77.7 Receiving the Content
77.8 Returning the Modified Data to the Host App
77.9 Testing the Extension
77.10 Summary - Receiving Data from an iOS 16 Action Extension
78.1 Creating the Example Project
78.2 Designing the User Interface
78.3 Importing the Mobile Core Services Framework
78.4 Adding an Action Button to the App
78.5 Receiving Data from an Extension
78.6 Testing the App
78.7 Summary - An Introduction to Building iOS 16 Message Apps
79.1 Introducing Message Apps
79.2 Types of Message Apps
79.3 The Key Messages Framework Classes
79.3.1 MSMessagesAppViewController
79.3.2 MSConversation
79.3.3 MSMessage
79.3.4 MSMessageTemplateLayout
79.4 Sending Simple Messages
79.5 Creating an MSMessage Message
79.6 Receiving a Message
79.7 Supported Message App Platforms
79.8 Summary - An iOS 16 Interactive Message App Tutorial
80.1 About the Example Message App Project
80.2 Creating the MessageApp Project
80.3 Designing the MessageApp User Interface
80.4 Creating the Outlet Collection
80.5 Creating the Game Model
80.6 Responding to Button Selections
80.7 Preparing the Message URL
80.8 Preparing and Inserting the Message
80.9 Message Receipt Handling
80.10 Setting the Message Image
80.11 Summary - An Introduction to SiriKit
81.1 Siri and SiriKit
81.2 SiriKit Domains
81.3 Siri Shortcuts
81.4 SiriKit Intents
81.5 How SiriKit Integration Works
81.6 Resolving Intent Parameters
81.7 The Confirm Method
81.8 The Handle Method
81.9 Custom Vocabulary
81.10 The Siri User Interface
81.11 Summary - An iOS 16 Example SiriKit Messaging Extension
82.1 Creating the Example Project
82.2 Enabling the Siri Entitlement
82.3 Seeking Siri Authorization
82.4 Adding the Extensions
82.5 Supported Intents
82.6 Using the Default User Interface
82.7 Trying the Example
82.8 Specifying a Default Phrase
82.9 Reviewing the Intent Handler
82.10 Summary - An Introduction to Machine Learning on iOS
83.1 Datasets and Machine Learning Models
83.2 Machine Learning in Xcode and iOS
83.3 iOS Machine Learning Frameworks
83.4 Summary - Using Create ML to Build an Image Classification Model
84.1 About the Dataset
84.2 Creating the Machine Learning Model
84.3 Importing the Training and Testing Data
84.4 Training and Testing the Model
84.5 Summary - An iOS Vision and Core ML Image Classification Tutorial
85.1 Preparing the Project
85.2 Adding the Model
85.3 Modifying the User Interface
85.4 Initializing the Core ML Request
85.5 Handling the Results of the Core ML Request
85.6 Making the Classification Request
85.7 Testing the App
85.8 Summary - An iOS 16 Quick Actions Tutorial
86.1 Creating the Quick Actions Example Project
86.2 Static Quick Action Keys
86.3 Adding a Static Quick Action to the Project
86.4 Adding a Dynamic Quick Action
86.5 Adding, Removing, and Changing Dynamic Quick Actions
86.6 Responding to a Quick Action Selection
86.7 Testing the Quick Action App
86.8 Summary - An iOS 16 Local Notification Tutorial
87.1 Creating the Local Notification App Project
87.2 Requesting Notification Authorization
87.3 Designing the User Interface
87.4 Creating the Message Content
87.5 Specifying a Notification Trigger
87.6 Creating the Notification Request
87.7 Adding the Request
87.8 Testing the Notification
87.9 Receiving Notifications in the Foreground
87.10 Adding Notification Actions
87.11 Handling Notification Actions
87.12 Hidden Notification Content
87.13 Managing Notifications
87.14 Summary - Playing Audio on iOS 16 using AVAudioPlayer
88.1 Supported Audio Formats
88.2 Receiving Playback Notifications
88.3 Controlling and Monitoring Playback
88.4 Creating the Audio Example App
88.5 Adding an Audio File to the Project Resources
88.6 Designing the User Interface
88.7 Implementing the Action Methods
88.8 Creating and Initializing the AVAudioPlayer Object
88.9 Implementing the AVAudioPlayerDelegate Protocol Methods
88.10 Building and Running the App
88.11 Summary - Recording Audio on iOS 16 with AVAudioRecorder
89.1 An Overview of the AVAudioRecorder Tutorial
89.2 Creating the Recorder Project
89.3 Configuring the Microphone Usage Description
89.4 Designing the User Interface
89.5 Creating the AVAudioRecorder Instance
89.6 Implementing the Action Methods
89.7 Implementing the Delegate Methods
89.8 Testing the App
89.9 Summary - An iOS 16 Speech Recognition Tutorial
90.1 An Overview of Speech Recognition in iOS
90.2 Speech Recognition Authorization
90.3 Transcribing Recorded Audio
90.4 Transcribing Live Audio
90.5 An Audio File Speech Recognition Tutorial
90.6 Modifying the User Interface
90.7 Adding the Speech Recognition Permission
90.8 Seeking Speech Recognition Authorization
90.9 Performing the Transcription
90.10 Testing the App
90.11 Summary - An iOS 16 Real-Time Speech Recognition Tutorial
91.1 Creating the Project
91.2 Designing the User Interface
91.3 Adding the Speech Recognition Permission
91.4 Requesting Speech Recognition Authorization
91.5 Declaring and Initializing the Speech and Audio Objects
91.6 Starting the Transcription
91.7 Implementing the stopTranscribing Method
91.8 Testing the App
91.9 Summary - An Introduction to iOS 16 Sprite Kit Programming
92.1 What is Sprite Kit?
92.2 The Key Components of a Sprite Kit Game
92.2.1 Sprite Kit View
92.2.2 Scenes
92.2.3 Nodes
92.2.4 Physics Bodies
92.2.5 Physics World
92.2.6 Actions
92.2.7 Transitions
92.2.8 Texture Atlas
92.2.9 Constraints
92.3 An Example Sprite Kit Game Hierarchy
92.4 The Sprite Kit Game Rendering Loop
92.5 The Sprite Kit Level Editor
92.6 Summary - An iOS 16 Sprite Kit Level Editor Game Tutorial
93.1 About the Sprite Kit Demo Game
93.2 Creating the SpriteKitDemo Project
93.3 Reviewing the SpriteKit Game Template Project
93.4 Restricting Interface Orientation
93.5 Modifying the GameScene SpriteKit Scene File
93.6 Creating the Archery Scene
93.7 Transitioning to the Archery Scene
93.8 Adding the Texture Atlas
93.9 Designing the Archery Scene
93.10 Preparing the Archery Scene
93.11 Preparing the Animation Texture Atlas
93.12 Creating the Named Action Reference
93.13 Triggering the Named Action from the Code
93.14 Creating the Arrow Sprite Node
93.15 Shooting the Arrow
93.16 Adding the Ball Sprite Node
93.17 Summary - An iOS 16 Sprite Kit Collision Handling Tutorial
94.1 Defining the Category Bit Masks
94.2 Assigning the Category Masks to the Sprite Nodes
94.3 Configuring the Collision and Contact Masks
94.4 Implementing the Contact Delegate
94.5 Game Over
94.6 Summary - An iOS 16 Sprite Kit Particle Emitter Tutorial
95.1 What is the Particle Emitter?
95.2 The Particle Emitter Editor
95.3 The SKEmitterNode Class
95.4 Using the Particle Emitter Editor
95.5 Particle Emitter Node Properties
95.5.1 Background
95.5.2 Particle Texture
95.5.3 Particle Birthrate
95.5.4 Particle Life Cycle
95.5.5 Particle Position Range
95.5.6 Angle
95.5.7 Particle Speed
95.5.8 Particle Acceleration
95.5.9 Particle Scale
95.5.10 Particle Rotation
95.5.11 Particle Color
95.5.12 Particle Blend Mode
95.6 Experimenting with the Particle Emitter Editor
95.7 Bursting a Ball using Particle Emitter Effects
95.8 Adding the Burst Particle Emitter Effect
95.9 Adding an Audio Action
95.10 Summary - Preparing and Submitting an iOS 16 Application to the App Store
96.1 Verifying the iOS Distribution Certificate
96.2 Adding App Icons
96.3 Assign the Project to a Team
96.4 Archiving the Application for Distribution
96.5 Configuring the Application in App Store Connect
96.6 Validating and Submitting the Application
96.7 Configuring and Submitting the App for Review
Index
_Installing_Xcode_5
_Installing_Xcode_6
_Installing_Xcode_7
_Installing_Xcode_8
_Installing_Xcode_9
_Installing_Xcode_10
Starting_Xcode
_Ref429746122
_Ref429746723
_Ref302558281
_Ref504467476
_Ref362425536
_Ref401646208
_Ref401650569
_Ref302558390
_Ref401646807
_Ref401648106
_Ref429745526
_Ref404763289
_Ref302559013
_Ref431551178
_Ref500159872
_Ref464051841
_Ref363730032
_Ref363730496
_Ref332889222
_Ref332891516
_Ref332891899
_Ref363732512
_Ref404773322
_Ref363733654
_Ref332977299
_Ref333224727
_Ref458425317
_Ref463429244
_Ref396033177
_Ref463432575
_Ref395879753
_Ref458611363
_Ref302559385
_Ref336262998
_Ref302559412
OLE_LINK434
OLE_LINK435
OLE_LINK436
OLE_LINK437
OLE_LINK440
OLE_LINK441
OLE_LINK438
OLE_LINK439
OLE_LINK442
OLE_LINK443
_Ref426030298
_Ref426033304
_Ref426033363
_Ref426033523
_Ref314484484
_Ref314484533
_Ref314490902
_Ref400092383
_Ref504487771
_Ref314485785
_Ref400010228
_Ref314485814
_Ref314485876
OLE_LINK444
OLE_LINK445
OLE_LINK446
OLE_LINK447
OLE_LINK448
OLE_LINK449
OLE_LINK450
OLE_LINK451
OLE_LINK452
OLE_LINK453
OLE_LINK454
_Ref336599574
_Ref314486125
OLE_LINK455
OLE_LINK456
_Ref504554903
OLE_LINK457
OLE_LINK458
OLE_LINK459
OLE_LINK460
OLE_LINK461
OLE_LINK462
OLE_LINK463
OLE_LINK464
OLE_LINK465
OLE_LINK466
OLE_LINK469
OLE_LINK470
OLE_LINK471
OLE_LINK472
OLE_LINK473
OLE_LINK474
OLE_LINK475
OLE_LINK476
OLE_LINK477
OLE_LINK478
OLE_LINK479
OLE_LINK480
OLE_LINK481
OLE_LINK482
OLE_LINK483
OLE_LINK484
OLE_LINK485
OLE_LINK486
OLE_LINK487
OLE_LINK488
_Ref425151038
_Ref424740171
_Ref424721567
_Ref431304379
_Ref424721769
_Ref424893920
_Ref424816592
_Ref424894904
_Ref425434139
Understanding_Pathnames_in_Objective-C
Creating_an_NSFileManager_Instance_Objec
OLE_LINK13
OLE_LINK14
Identifying_the_Current_Working_Director
OLE_LINK15
OLE_LINK16
OLE_LINK17
OLE_LINK18
OLE_LINK19
OLE_LINK20
OLE_LINK21
OLE_LINK22
OLE_LINK23
OLE_LINK24
OLE_LINK25
OLE_LINK26
OLE_LINK3
OLE_LINK4
OLE_LINK27
OLE_LINK1
OLE_LINK2
OLE_LINK28
OLE_LINK29
OLE_LINK30
Checking_if_a_File_Exists
OLE_LINK31
OLE_LINK32
Comparing_the_Contents_of_Two_Files
OLE_LINK33
OLE_LINK34
Checking_if_a_File_is_Readable.2FWritabl
OLE_LINK35
OLE_LINK36
Moving.2FRenaming_a_File
OLE_LINK37
OLE_LINK38
Copying_a_File
OLE_LINK39
OLE_LINK40
Removing_a_File
OLE_LINK41
OLE_LINK42
Creating_a_Symbolic_Link
OLE_LINK43
OLE_LINK44
Reading_and_Writing_Files_with_NSFileMan
OLE_LINK45
OLE_LINK46
OLE_LINK47
OLE_LINK48
Working_with_Files_using_the_NSFileHandl
Creating_an_NSFileHandle_Object
OLE_LINK49
OLE_LINK50
NSFileHandle_File_Offsets_and_Seeking
OLE_LINK51
OLE_LINK52
Reading_Data_from_a_File
OLE_LINK53
OLE_LINK54
Writing_Data_to_a_File
OLE_LINK55
OLE_LINK56
Truncating_a_File
OLE_LINK57
OLE_LINK58
OLE_LINK500
OLE_LINK501
OLE_LINK502
OLE_LINK503
OLE_LINK504
OLE_LINK505
OLE_LINK506
OLE_LINK507
OLE_LINK508
OLE_LINK509
OLE_LINK510
OLE_LINK511
OLE_LINK512
OLE_LINK513
OLE_LINK514
OLE_LINK515
OLE_LINK516
OLE_LINK517
OLE_LINK518
OLE_LINK519
OLE_LINK520
OLE_LINK521
OLE_LINK522
OLE_LINK523
OLE_LINK524
OLE_LINK525
OLE_LINK526
OLE_LINK527
OLE_LINK530
OLE_LINK531
OLE_LINK532
OLE_LINK533
OLE_LINK534
OLE_LINK535
_Ref504051794
_Ref505156371
_Ref504568765
OLE_LINK536
OLE_LINK537
_Ref504568838
OLE_LINK538
OLE_LINK539
OLE_LINK540
OLE_LINK541
OLE_LINK542
OLE_LINK543
OLE_LINK544
OLE_LINK545
OLE_LINK546
OLE_LINK547
OLE_LINK548
OLE_LINK549
OLE_LINK550
OLE_LINK551
_Ref336593023
OLE_LINK552
OLE_LINK553
OLE_LINK554
OLE_LINK555
OLE_LINK556
OLE_LINK557
OLE_LINK558
OLE_LINK559
_Ref401571488
OLE_LINK560
OLE_LINK561
_Ref401572729
_Ref401572776
OLE_LINK562
OLE_LINK563
OLE_LINK564
OLE_LINK565
OLE_LINK566
OLE_LINK567
OLE_LINK568
OLE_LINK569
OLE_LINK570
OLE_LINK571
OLE_LINK572
_Ref302560021
OLE_LINK573
OLE_LINK574
OLE_LINK585
OLE_LINK586
OLE_LINK587
OLE_LINK575
OLE_LINK576
OLE_LINK577
OLE_LINK578
OLE_LINK588
OLE_LINK589
OLE_LINK579
OLE_LINK580
OLE_LINK581
OLE_LINK582
OLE_LINK590
OLE_LINK591
OLE_LINK583
OLE_LINK584
OLE_LINK592
_Ref397070365
_Ref396812798
OLE_LINK593
OLE_LINK594
OLE_LINK595
OLE_LINK596
OLE_LINK599
OLE_LINK600
OLE_LINK603
OLE_LINK604
OLE_LINK605
OLE_LINK606
OLE_LINK609
OLE_LINK610
OLE_LINK611
OLE_LINK612
OLE_LINK251
OLE_LINK252
OLE_LINK619
OLE_LINK620
OLE_LINK643
OLE_LINK644
OLE_LINK645
OLE_LINK646
OLE_LINK647
OLE_LINK648
OLE_LINK649
OLE_LINK650
OLE_LINK651
OLE_LINK652
OLE_LINK653
OLE_LINK654
OLE_LINK655
OLE_LINK656
OLE_LINK59
OLE_LINK60
OLE_LINK657
OLE_LINK658
OLE_LINK61
OLE_LINK62
OLE_LINK63
OLE_LINK64
_Drawing_iPhone_2D_2
OLE_LINK91
OLE_LINK92
OLE_LINK687
OLE_LINK93
OLE_LINK94
OLE_LINK688
OLE_LINK95
OLE_LINK96
OLE_LINK689
OLE_LINK97
OLE_LINK98
OLE_LINK690
_Ref501354161
_Ref501353308
_Ref501353466
_Ref396130951
_Ref396130929
_Ref396131274
OLE_LINK691
OLE_LINK692
OLE_LINK99
OLE_LINK100
OLE_LINK693
OLE_LINK101
OLE_LINK102
OLE_LINK694
OLE_LINK103
OLE_LINK104
OLE_LINK695
_Ref396132986
OLE_LINK105
OLE_LINK106
OLE_LINK696
_Ref396133644
_Drawing_iPhone_2D
_Drawing_iPhone_2D_1
_An_iPhone_Graphics
OLE_LINK697
OLE_LINK698
_Ref302560297
OLE_LINK699
OLE_LINK700
OLE_LINK701
OLE_LINK702
_Ref501119369
_Ref302560321
OLE_LINK703
OLE_LINK704
_Ref501119536
OLE_LINK705
OLE_LINK706
OLE_LINK707
OLE_LINK708
OLE_LINK709
OLE_LINK710
OLE_LINK711
OLE_LINK712
OLE_LINK713
OLE_LINK714
OLE_LINK715
OLE_LINK716
OLE_LINK717
OLE_LINK718
OLE_LINK719
OLE_LINK720
OLE_LINK721
OLE_LINK722
OLE_LINK723
OLE_LINK724
OLE_LINK725
OLE_LINK726
OLE_LINK727
OLE_LINK728
OLE_LINK731
OLE_LINK732
OLE_LINK729
OLE_LINK730
OLE_LINK733
OLE_LINK734
OLE_LINK735
OLE_LINK736
OLE_LINK737
OLE_LINK738
OLE_LINK739
OLE_LINK740
OLE_LINK741
OLE_LINK742
_Ref335231251
OLE_LINK743
OLE_LINK744
_iOS_7_UIKit
_Ref361042235
OLE_LINK747
OLE_LINK748
_Ref504723555
OLE_LINK751
OLE_LINK752
OLE_LINK753
OLE_LINK754
OLE_LINK755
OLE_LINK756
OLE_LINK759
OLE_LINK760
OLE_LINK757
OLE_LINK758
OLE_LINK761
OLE_LINK762
OLE_LINK763
OLE_LINK764
OLE_LINK765
OLE_LINK766
OLE_LINK767
OLE_LINK768
OLE_LINK769
OLE_LINK770
OLE_LINK771
OLE_LINK772
OLE_LINK773
OLE_LINK774
_Ref332631103
_Ref332700856
OLE_LINK107
OLE_LINK108
OLE_LINK109
OLE_LINK110
_Ref394323899
OLE_LINK113
OLE_LINK114
OLE_LINK115
OLE_LINK116
OLE_LINK117
OLE_LINK118
OLE_LINK119
OLE_LINK120
OLE_LINK121
OLE_LINK122
OLE_LINK123
OLE_LINK124
OLE_LINK125
OLE_LINK126
OLE_LINK127
OLE_LINK128
OLE_LINK131
OLE_LINK132
OLE_LINK129
OLE_LINK130
_Ref302560686
OLE_LINK135
OLE_LINK136
OLE_LINK137
OLE_LINK138
OLE_LINK139
OLE_LINK140
_Ref502136511
OLE_LINK141
OLE_LINK142
OLE_LINK143
OLE_LINK144
OLE_LINK145
OLE_LINK146
OLE_LINK147
_Ref363482848
OLE_LINK148
OLE_LINK149
OLE_LINK150
OLE_LINK151
_Ref502149712
_Ref502150865
OLE_LINK152
OLE_LINK153
OLE_LINK154
OLE_LINK155
OLE_LINK156
OLE_LINK157
_Ref505156512
OLE_LINK158
OLE_LINK159
_Ref363560487
_Ref363560705
OLE_LINK160
OLE_LINK161
OLE_LINK162
OLE_LINK163
OLE_LINK164
OLE_LINK165
_Ref363634669
OLE_LINK166
OLE_LINK167
OLE_LINK168
OLE_LINK169
OLE_LINK172
OLE_LINK173
OLE_LINK181
OLE_LINK182
OLE_LINK170
OLE_LINK171
OLE_LINK197
OLE_LINK198
_Ref336593031
OLE_LINK183
OLE_LINK184
OLE_LINK185
OLE_LINK186
OLE_LINK187
OLE_LINK188
OLE_LINK189
OLE_LINK190
OLE_LINK191
OLE_LINK192
OLE_LINK193
OLE_LINK194
OLE_LINK195
OLE_LINK196
OLE_LINK199
OLE_LINK200
OLE_LINK205
OLE_LINK206
OLE_LINK207
OLE_LINK208
OLE_LINK209
OLE_LINK210
_Ref425767730
_Ref425767748
OLE_LINK211
OLE_LINK212
OLE_LINK853
OLE_LINK215
OLE_LINK216
OLE_LINK856
OLE_LINK857
OLE_LINK858
OLE_LINK217
OLE_LINK218
OLE_LINK219
OLE_LINK220
OLE_LINK859
OLE_LINK860
OLE_LINK221
OLE_LINK222
_Ref506294773
_Ref506294792
_Ref506294813
_Ref506294969
OLE_LINK875
OLE_LINK876
OLE_LINK245
OLE_LINK246
OLE_LINK877
OLE_LINK878
OLE_LINK879
OLE_LINK880
OLE_LINK881
OLE_LINK882
OLE_LINK883
OLE_LINK884
OLE_LINK885
OLE_LINK887
OLE_LINK888
OLE_LINK253
OLE_LINK254
OLE_LINK255
OLE_LINK256
_Ref506295094
_Ref506295127
_Ref506295141
_Ref506295172
OLE_LINK257
OLE_LINK258
OLE_LINK889
OLE_LINK259
OLE_LINK260
OLE_LINK890
OLE_LINK263
OLE_LINK264
OLE_LINK892
OLE_LINK265
OLE_LINK266
OLE_LINK893
OLE_LINK267
OLE_LINK268
OLE_LINK894
_Ref506295199
_Ref506295273
OLE_LINK271
OLE_LINK272
OLE_LINK895
OLE_LINK273
OLE_LINK274
OLE_LINK896
OLE_LINK275
OLE_LINK276
OLE_LINK897
_Ref506295306
_Ref506295318
_Ref506295368
_Ref506295386
OLE_LINK277
OLE_LINK278
OLE_LINK898
OLE_LINK899
OLE_LINK900
OLE_LINK279
OLE_LINK280
OLE_LINK901
OLE_LINK281
OLE_LINK902
OLE_LINK903
OLE_LINK282
OLE_LINK283
OLE_LINK904
OLE_LINK905
OLE_LINK284
OLE_LINK285
OLE_LINK286
OLE_LINK287
OLE_LINK906
OLE_LINK907
OLE_LINK288
OLE_LINK289
OLE_LINK908
OLE_LINK290
OLE_LINK291
OLE_LINK909
OLE_LINK910
OLE_LINK292
OLE_LINK293
OLE_LINK911
_Ref464572455
OLE_LINK298
OLE_LINK299
OLE_LINK918
OLE_LINK300
OLE_LINK301
OLE_LINK302
OLE_LINK303
OLE_LINK919
OLE_LINK304
OLE_LINK305
OLE_LINK920
OLE_LINK921
_Ref461204097
OLE_LINK922
OLE_LINK923
_Ref502926326
OLE_LINK306
OLE_LINK307
_Ref525655341
_Ref525655797
OLE_LINK992
OLE_LINK993
OLE_LINK994
OLE_LINK995
OLE_LINK996
OLE_LINK997
OLE_LINK998
OLE_LINK999
OLE_LINK1000
OLE_LINK1001
OLE_LINK1002
OLE_LINK1003
OLE_LINK348
OLE_LINK349
OLE_LINK1004
OLE_LINK350
OLE_LINK351
OLE_LINK1005
OLE_LINK1006
OLE_LINK352
OLE_LINK353
OLE_LINK1007
OLE_LINK1008
_Ref506295587
OLE_LINK1023
OLE_LINK1024
_Ref506295600
OLE_LINK354
OLE_LINK355
OLE_LINK1009
_Ref506295614
OLE_LINK356
OLE_LINK357
OLE_LINK1010
OLE_LINK358
OLE_LINK359
OLE_LINK1011
OLE_LINK360
OLE_LINK361
OLE_LINK1012
OLE_LINK1013
OLE_LINK362
OLE_LINK363
OLE_LINK1014
OLE_LINK1015
OLE_LINK1016
OLE_LINK364
OLE_LINK365
OLE_LINK1017
OLE_LINK1018
OLE_LINK366
OLE_LINK367
OLE_LINK1019
OLE_LINK368
OLE_LINK369
OLE_LINK1020
_Ref506295649
OLE_LINK1021
OLE_LINK1022
_Ref501457015
_Ref501459683
OLE_LINK1025
OLE_LINK1026
_Ref506295668
OLE_LINK370
OLE_LINK371
OLE_LINK1031
OLE_LINK1027
OLE_LINK1028
OLE_LINK1029
OLE_LINK1030
OLE_LINK1032
OLE_LINK1033
OLE_LINK1034
OLE_LINK1035
OLE_LINK1036
OLE_LINK1037
OLE_LINK1038
OLE_LINK1039
OLE_LINK372
OLE_LINK373
OLE_LINK1040
_Ref506295711
OLE_LINK378
OLE_LINK379
OLE_LINK1042
OLE_LINK376
OLE_LINK377
OLE_LINK1043
OLE_LINK380
OLE_LINK381
OLE_LINK1044
OLE_LINK1045
OLE_LINK1046
OLE_LINK1047
OLE_LINK1048
OLE_LINK1049
OLE_LINK1050
OLE_LINK1051
OLE_LINK1052
OLE_LINK1053
OLE_LINK1054
OLE_LINK1055
OLE_LINK1056
_Ref506295735
OLE_LINK383
OLE_LINK384
OLE_LINK1058
OLE_LINK1059
OLE_LINK1060
OLE_LINK385
OLE_LINK386
OLE_LINK1061
OLE_LINK1062
OLE_LINK387
OLE_LINK388
OLE_LINK1063
_Ref506295762
OLE_LINK391
OLE_LINK392
OLE_LINK1065
OLE_LINK393
OLE_LINK394
OLE_LINK1066
OLE_LINK395
OLE_LINK396
OLE_LINK1067
OLE_LINK397
OLE_LINK398
OLE_LINK1068
OLE_LINK1069
OLE_LINK1070
OLE_LINK1071
OLE_LINK399
OLE_LINK400
OLE_LINK401
OLE_LINK402
OLE_LINK1072
OLE_LINK403
OLE_LINK404
OLE_LINK1073
_Ref506295932
_Ref506295943
OLE_LINK429
OLE_LINK430
OLE_LINK1074
OLE_LINK431
OLE_LINK432
OLE_LINK433
OLE_LINK1075
OLE_LINK1076
OLE_LINK1077
OLE_LINK1078
OLE_LINK1079
OLE_LINK1080
OLE_LINK1081
OLE_LINK1082
OLE_LINK1083
OLE_LINK1084
OLE_LINK1085
OLE_LINK1086
OLE_LINK1087
OLE_LINK1090
OLE_LINK1091
OLE_LINK1092
OLE_LINK1093
OLE_LINK1094
OLE_LINK1095
OLE_LINK1096
OLE_LINK1097
OLE_LINK1098
OLE_LINK1099
OLE_LINK1100
OLE_LINK1101
OLE_LINK1102
OLE_LINK1103
OLE_LINK1104
OLE_LINK1105
OLE_LINK1106
OLE_LINK1107
_Ref506296063
_Ref506296074
_Ref506296088
OLE_LINK1108
OLE_LINK1109
OLE_LINK1110
OLE_LINK1111
OLE_LINK1112
OLE_LINK1113
π SIMILAR VOLUMES
<p><span>This book will teach you the skills necessary to build iOS 16 applications using SwiftUI, Xcode 14, and the Swift 5.7 programming language.</span></p><p><span>Beginning with the basics, this book outlines the steps necessary to set up an iOS development environment, together with an introdu
iOS 12 App Development Essentials, the latest edition of this popular book series, has now been fully updated for the iOS 12 SDK, Xcode 10 and the Swift 4.2 programming language.<br /><br />This publication is available for purchase in print and eBook editions. The print edition consists of 102 chap
<p> iOS 10 App Development Essentials is latest edition of this popular book series and has now been fully updated for the iOS 10 SDK, Xcode 8 and the Swift 3 programming language. </p><p> Beginning with the basics, this book provides an outline of the steps necessary to set up an iOS development en
<p><span>Follow Greg at twitter.com/greglim81</span><span><br><br>In this book, we take you on a fun, hands-on and pragmatic journey to learning iOS 16 application development using Swift. You'll start building your first iOS app within minutes. Every section is written in a bite-sized manner and st
<p> iOS 9 App Development Essentials is latest edition of this popular book series and has now been fully updated for the iOS 9 SDK, Xcode 7 and the Swift 2 programming language. <p> Beginning with the basics, this book provides an outline of the steps necessary to set up an iOS development environm