Skip to main content

📗 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
Link to Book