📗 Hacking with iOS: UIKit Edition
A hands-on guide to learning iOS app development using the UIKit framework. This book covers a series of real-world projects that teach Swift programming and iOS development through practical, step-by-step tutorials.
Details
URL: 🔗 https://www.hackingwithswift.com/store/hacking-with-ios
Published: October 26, 2019
Authors: Paul Hudson
Tags:
Swift
, iOS Development
, UIKit
, Programming
, Tutorials
Key Points
- Practical, project-based learning approach
- Covers a wide range of iOS development topics
- Step-by-step tutorials with real-world applications
- Suitable for beginners and intermediate developers
- Focus on UIKit framework for building user interfaces
Summary of Contents
-
Introduction: Swift for Complete Beginners
- How to install Xcode and create a playground
- Basic Swift concepts: variables, data types, operators, control flow, functions, optionals, and more
-
Project 1: Storm Viewer
- Setting up and listing images with FileManager
- Designing the user interface
- Building a detail screen and loading images with UIImage
-
Project 2: Guess the Flag
- Designing layout and making the basic game work
- Using UIButton and CALayer, random numbers, and creating IBActions
-
Project 3: Social Media
- Using UIActivityViewController to share content
-
Project 4: Easy Browser
- Creating a simple web browser with WKWebView
- Using UIAlertController for action sheets and UIToolbar for monitoring page loads
-
Project 5: Word Scramble
- Reading from disk, picking words, and checking for valid answers using UIAlertController and lowercased()
-
Project 6: Auto Layout
- Advanced Auto Layout techniques and using addConstraints with Visual Format Language
-
Project 7: Whitehouse Petitions
- Creating UI with UITabBarController and parsing JSON using the Codable protocol
-
Project 8: 7 Swifty Words
- Building a user interface programmatically and adding button targets
- Using property observers like didSet
-
Project 9: Grand Central Dispatch
- Understanding GCD and using async(), DispatchQueue.main, and performSelector(inBackground:)
-
Project 10: Names to Faces
- Designing UICollectionView cells and importing photos with UIImagePickerController
-
Project 11: Pachinko
- Using SKSpriteNode, SKPhysicsBody, SKLabelNode, and SKEmitterNode for game development
-
Project 12: UserDefaults
- Reading and writing with UserDefaults and using NSCoding and Codable for data persistence
-
Project 13: Instafilter
- Applying filters with CIContext and CIFilter, and saving to the photo library
-
Project 14: Whack-a-Penguin
- Using SKCropNode, SKAction, and SKTexture for game mechanics
-
Project 15: Animation
- Using CGAffineTransform for animations
-
Project 16: Capital Cities
- Working with MapKit and MKPinAnnotationView
-
Project 17: Space Race
- Implementing game mechanics with Timer, linearDamping, and angularDamping
-
Project 18: Debugging
- Using print(), assert(), breakpoints, and view debugging tools
-
Project 19: JavaScript Injection
- Adding an extension with NSExtensionItem and establishing communication
-
Project 20: Fireworks Night
- Creating effects with SKEmitterNode and using Timer
-
Project 21: Local Notifications
- Scheduling and responding to notifications with UNUserNotificationCenter and UNNotificationRequest
-
Project 22: Detect-a-Beacon
- Using Core Location and CLBeaconRegion for beacon detection
-
Project 23: Swifty Ninja
- Implementing game mechanics with SKShapeNode, SKAction, and AVAudioPlayer
-
Project 24: Swift Strings
- Working with strings and formatting with NSAttributedString
-
Project 25: Selfie Share
- Peer-to-peer connectivity with MCSession and MCBrowserViewController
-
Project 26: Marble Maze
- Using CMMotionManager for tilt-based controls
-
Project 27: Core Graphics
- Drawing with UIGraphicsImageRenderer and working with Core Graphics contexts
-
Project 28: Secret Swift
- Using the iOS keychain and Touch ID/Face ID with LocalAuthentication
-
Project 29: Exploding Monkeys
- Combining UIKit and SpriteKit for game development
-
Project 30: Instruments
- Using Instruments to identify and fix performance issues
-
Project 31: Multibrowser
- Implementing UIStackView and iPad multitasking
-
Project 32: SwiftSearcher
- Using Dynamic Type and NSAttributedString for resizing cells and adding Core Spotlight
-
Project 33: What's that Whistle?
- Recording audio with AVAudioRecorder and working with CloudKit for iCloud integration
-
Project 34: Four in a Row
- Implementing game logic with GKGameModelPlayer and GKMinmaxStrategist
-
Project 35: Random Numbers
- Using GKRandomSource and GKRandomDistribution for random number generation
-
Project 36: Crashy Plane
- Parallax scrolling with SpriteKit and handling collisions
-
Project 37: Psychic Tester
- Using CAEmitterLayer for particle systems and measuring touch strength with 3D Touch
-
Project 38: GitHub Commits
- Working with Core Data and optimizing performance with NSFetchedResultsController
-
Project 39: Unit testing with XCTest
- Writing unit tests and UI tests with XCTest framework
Conclusion
- Recap of key concepts and encouragement to practice and explore further
- Emphasis on hands-on learning and building real-world projects