100 Days of Swift

I started learning swift and kept going for 100 days. Each day, I tried to build something from what I learned. Most projects took a few days to complete. Below is my progression from day one to a hundred in the form of completed projects. A total of 40 projects.

Read more about this on Medium

Project 40 - Stretchy Header

November 12, 2015

I learned how to:

  • Build custom transparent navigation bar
  • Implement a Collection View in a Table View Controller
  • Create a stretchy header based of the user's pull

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

Project 39 - Embedded Collection View

November 11, 2015

I learned how to:

  • Build custom transparent navigation bar
  • Implement a Collection View in a Table View Controller
  • Populate embedded Collection View with data from a dictionary

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

Project 38 - Interactive Transitions

November 9, 2015

I learned how to:

  • Implement Percent Driven Interactive Transition with a Custom Transition
  • Use Edge Pan Gesture to trigger Interactive Transition

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

* Artwork by Zesty Does Things

Project 37 - Custom Transitions

November 6, 2015

I learned how to:

  • Create custom transitions with Apple's Transition API
  • Write protocols to pass data between views
  • Build a Navigation Controller Delegate to use custom transitions
  • Use custom transitions with a Collection View
  • Instantiate View Controllers programmatically

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

* Artwork by Zesty Does Things

Project 36 - Core Animation & Masks 2

October 29, 2015

I learned how to:

  • Create complex animations with Core Animation
  • Build and use masks with Core Animation
  • Build efficient hierarchy for multiple animations
  • Animate the status bar with a fade in

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

* This is a recreation of Twitter's iOS App Launch Screen

Project 35 - Core Animation & Masks 1

October 27, 2015

I learned how to:

  • Use Custom Fonts
  • Create complex animations with Core & Spring Animation
  • Build and use masks with Core Animation
  • Build efficient hierarchy for multiple animations
  • Layer animations

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

* This is a recreation of Google's iOS App Mic Animation

Project 34 - Spring Animations

October 24, 2015

I learned how to:

  • Use multiple Spring Animations along with Autolayout
  • Create seamless animation from launch screen to view controller

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

* This is a recreation of Google's iOS App Launch Screen Animation

Project 33 - Custom Swipe Transitions

October 22, 2015

I learned how to:

  • Perform Custom Segues with Swipe Gesture Recognizers
  • Unwind Segues
  • Animate Custom View Transitions
  • Implement Custom Segues Progammatically

Tools: Xcode 7, Swift 2.1, UIKit

Project 32 - Basic Animation

October 20, 2015

I learned how to:

  • Implement ImagesViews programmatically
  • Create UIView Animations

Tools: Xcode 7, Swift 2.1, UIKit, Sketch

Project 31 - Custom Search Results

October 12, 2015

I learned how to:

  • create custom Search Bar
  • build custom Search Results View
  • overlay Search Results over current content
  • create and dismiss Blur View
  • implement Search Controller
  • search and retrieve data from a dictionary

Tools: Xcode 7, Swift 2.1, UIKit

* Design inspired by Apple's iOS Trailers App

Project 30 - Segmented Control Views

October 1, 2015

I learned how to:

  • Use Segmented Control to Toggle Views
  • Customize Navigation Bar with Segmented Control
  • Work with Segmented Control and Collection & Table Views

Tools: Xcode 7, Swift 2.1, UIKit

* Design inspired by Apple's iOS Trailers App

Project 29 - Mutiple Collection Views

October 1, 2015

I learned how to:

  • Work with Multiple Collection Views
  • Implement Cross-Directional Scroll Views
  • Use Local Data Model for Multiple Collection Views
  • Customize Collection View Cells

Tools: Xcode 7, Swift 2.1, UIKit

* Design inspired by Apple's iOS Trailers App

Project 28 - Image Carousel

September 30, 2015

I learned how to:

  • Use UI Collection View for Page Scrolling
  • Populate Collection View with local data
  • Customize Collection View Cell
  • Implement 2 Different Views in a Table View

Tools: Xcode 7, Swift 2.1, UIKit

* Design inspired by Apple's iOS Trailers App

Project 27 - Search Bar in Table View

September 28, 2015

I learned how to:

  • Use UISearchController with a Table View
  • Display Search Results

Tools: Xcode 7, Swift 2.1, UIKit

Project 26 - Action Sheet

September 26, 2015

I learned how to:

  • Work with UIAlertController
  • Create and add Actions to Alert Controller
  • Build Action Handlers

Tools: Xcode 7, Swift 2.1, UIKit

Project 25 - Scroll Views

September 25, 2015

I learned how to:

  • Implement a Scroll View that expands if content is off screen
  • Use Dynamic Data with Collection View and Scroll View
  • Build custom Navigation Bar
  • Customize Back Button
  • Retrieve Data from Local Database

Tools: Xcode 7, Swift 2.1, UIKit

Project 24 - Custom Collection View

September 23, 2015

I learned how to:

  • Build a custom Collection View
  • Load images into the Collection View

Tools: Xcode 7, Swift 2.1, UIKit

Project 23 - Change Date And Time

September 19, 2015

I learned how to:

  • Pass data to back and forth between 2 views
  • Format date and time from UIPickers
  • Make UIPickers display previously selected Date and Time
  • Get and show today's Date and Time

Tools: Xcode 7, Swift 2.0, UIKit

Project 22 - Setting The Date

September 16, 2015

I learned how to:

  • Use UIDatePicker to get NSDate Information
  • Use NSDateFormatter to convert the date to a string
  • Set the View Title to the Date

Tools: Xcode 7, Swift 2.0, UIKit

Project 21 - Set Location

September 16, 2015

I learned how to:

  • Request permission to use Location Services
  • Set the location
  • Convert the user's position data (laditude / longitude) to street address style
  • Conserve battery with CLLocationManager

Tools: Xcode 7, Swift 2.0, UIKit, CoreLocation

Project 20 - Save Date, Location & Photo

September 15, 2015

I learned how to:

  • Use Core Location to retrieve Location
  • Convert ImageData to Binary for saving to Core Data
  • Work with NSDate
  • Load Core Data info in Table View
  • Sort Table View by Date provided by Core Data

Tools: Sketch, Xcode 7, Swift 2.0, UIKit, CoreData, CoreLocation

Project 19 - Buttons Above Keyboard

September 13, 2015

I learned how to:

  • Create an Accessory Input View
  • Use constraints to align buttons
  • Use icons for UIButtons

Tools: Sketch, Xcode 7, Swift 2.0, UIKit

Project 18 - Dynamic Data For Each Cell

September 1, 2015

Part 4 of Contacts App for iOS

  • Change the color of the Navigation Bar, Status Bar and Navigation Buttons
  • Use Dictionaries to dynamically fill tables with text and images
  • Transfer data from the currently selected row to the next View

Tools: Sketch, Xcode 7, Swift 2.0, UIKit

Project 17 - The Model and Controllers

August 30, 2015

Part 3 of Contacts App for iOS

I learned how to:

  • Store and access data in Dictionaries
  • Create Section Headers and Rows in Tables
  • Work with multiple View controllers

Tools: Xcode 7, Swift 2.0, UIKit

Project 16 - Building The User Interface

August 27, 2015

Part 2 of Contacts App for iOS

I learned how to:

  • Use Navigation, Table View and View Controllers
  • Use Auto Layout for creating Universal Apps
  • Connect Views with Segues
  • Work with ImageViews, Labels
  • Customize Table Sections, Rows, Cells and Separators

Tools: Xcode 7

Project 15 - From Sketch to Xcode

August 26, 2015

Part 1 of Contacts App for iOS

I learned how to:

  • Design Custom Table Sections and Rows
  • Mentally apply Auto Layout
  • Design For Retina screens
  • Efficiently export assets for Xcode

Tools: Sketch

Project 14 - Jumpbar

August 20, 2015

I learned how to:

  • Sort an Array in alphabetical order
  • Create an Indexed Table View

Tools: Xcode 7, Swift 2.0, UIKit

Project 13 - Sticky Section Headers

August 19, 2015

I learned how to:

  • Store and access data in a Dictionary
  • Use a Dictionary to dynamically fill a table with text
  • Create Sticky Section Headers based off data in a Dictionary

Tools: Xcode 7, Swift 2.0, UIKit

Project 12 - Add New Item

August 18, 2015

I learned how to:

  • Create a Model to interact with View Controllers
  • Add data to the Model
  • Update the Table View when the View loads
  • Dismiss the View from the Keyboard Done key
  • Segue to new Views from a Button

Tools: Xcode 7, Swift 2.0, UIKit

Project 11 - Deleting and Rearranging

August 18, 2015

I learned how to:

  • Remove data from Data Source
  • Delete data from Table Row
  • Animate the item deletion
  • Handle rearranging Table Rows
  • Enable swipe to delete Table Row

Tools: Xcode 7, Swift 2.0, UIKit

Project 10 - Pull To Refresh Table View

August 18, 2015

I learned how to:

  • Build a custom Table View Controller
  • Create custom Refresh Control
  • Stop refresh animation when data finishes updating
  • Update the table with refreshed local data

Tools: Xcode 7, Swift 2.0, UIKit

Project 9 - Add Photo From Camera Roll

August 17, 2015

I learned how to:

  • Access the Camera Roll from within the App
  • Create Image Picker Controller
  • Handle a selected image in the Camera Roll
  • Control how the image is displayed to prevent stretching

Tools: Xcode 7, Swift 2.0, UIKit

Project 8 - Swipe to Dismiss Keyboard

August 15, 2015

I learned how to:

  • Work with Gestures
  • Create Custom Navigation Bars
  • Customize the way Back Buttons are displayed
  • Auto-launch the Keyboard when the View loads

Tools: Xcode 7, Swift 2.0, UIKit

Project 7 - Passing Data to Another View

August 15, 2015

I learned how to:

  • Store data in memory before changing views
  • Send stored data from one view to the other

Tools: Xcode 7, Swift 2.0, UIKit

Project 6 - Getting Current Date and Time

August 13, 2015

I learned how to:

  • Work with NSDate and NSDateFormatter
  • Set the current date and time based on the user's iPhone settings
  • Format the date to the user's UTC time
  • Refresh date and time

Tools: Xcode 7, Swift 2.0, UIKit

Project 5 - Basic Table View

August 13, 2015

I learned how to:

  • Build Custom Table View Controller
  • Work with Nav Bar Buttons
  • Populate Table Rows with local data

Tools: Xcode 7, Swift 2.0, UIKit

Project 4 - Tip Calculator

August 10, 2015

I learned how to:

  • Write an app in MVC pattern
  • Work with Computed Properties
  • Create a toolbar above the keyboard
  • Set min and max values for Slider
  • Convert Strings to Int / Double and vice versa
  • Handle calculations with formulas written in the Model
  • Enable or disable objects based on if the keyboard is open
  • Get values from the UISlider and convert them to Int for use in the Model

Tools: Xcode 7, Swift 2.0, UIKit

Project 3 - Swift iAd

August 10, 2015

I learned how to:

  • Build an iAd Banner
  • Work with Ad Banner View
  • Handle ads that don't load
  • Use Constraints to pin iAd Banners at the bottom for portrait and landscape views

Tools: Xcode 7, Swift 2.0, UIKit, iAd

Project 2 - Tap or Hold Counter

August 5, 2015

I learned how to:

  • Use and detect Long Press Gestures
  • Work with multiple actions on one button

Tools: Xcode 7, Swift 2.0, UIKit

Project 1 - Tap Counter

August 4, 2015

I learned how to:

  • Build an Interface with Labels and Buttons
  • Use functions with buttons
  • Use NSNumberFormatter
  • Unwrapping Optionals
  • Build custom Navigation Bar

Tools: Xcode 7, Swift 2.0, UIKit