Home

Awesome

App Development With Swift

Projects, playgrounds, and notes made while following along with Apple's book App Development With Swift.

Shield.io MIT License Shield

Project Portfolio

UnitProjectTopics CoveredProgress
1 - Getting StartedLight: A minimalist flashlight app 🔦Xcode, Interface Builder, and connecting outlets and actions between them✅
2 - Intro to UIKitHello: An app for introducing someone.Configuring views in Interface Builder :::: Customizing labels :::: Customizing image views🚧
2 - Intro to UIKitAuto-Layout CalculatorUsing nested vertical and horizontal stack views to display a calculator that fits lays out cleanly across size classes✅
<br> <br> <div style="text-align: center;"> <img src="./02-introduction-to-uikit/lesson-projects/Calculator/Screenshots/portrait.png" width="200"/> <img src="./02-introduction-to-uikit/lesson-projects/Calculator/Screenshots/landscape.png" width="400"/> </div> <br> <br>
UnitProjectTopics CoveredProgress
2 - Intro to UIKitApple Pie: A hangman-style word guessing gameBuilding a game interface with nested vertical and horizontal stack views :::: Responding to events and updating complex interfaces based on game state changes✅
<br> <br> <div style="text-align: center;"> <img src="./02-introduction-to-uikit/unit-project/Apple%20Pie/Screenshots/portrait-1.png" width="200"/> <img src="./02-introduction-to-uikit/unit-project/Apple%20Pie/Screenshots/landscape-1.png" width="400"/> </div> <br> <br>
UnitProjectTopics CoveredProgress
3 - Navigation and WorkflowsTraffic SeguesUsing programmatic and Storyboard-based segues to construct multiple levels of view transitions :::: Reading segue identifiers :::: Different segue animations.✅
<br/> <br/> <div style="text-align: center;"> <img src="./03-navigation-and-workflows/lesson-projects/TrafficSegues/screenshots/screenshot-1.png" width="30%"/> <img src="./03-navigation-and-workflows/lesson-projects/TrafficSegues/screenshots/screenshot-2.png" width="30%"/> <img src="./03-navigation-and-workflows/lesson-projects/TrafficSegues/screenshots/screenshot-3.png" width="30%"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
3 - Navigation and WorkflowsLoginUsing programmatic and Storyboard-based segues to orchestrate a login page flow.✅
3 - Navigation and WorkflowsRainbow TabsRelating a TabBarController to child view controllers and customizing the tab bar button icon for each✅
3 - Navigation and WorkflowsLife CycleDebugging and viewing the lifecycle events of view controllers as they're called between two transitioning controllers✅
3 - Navigation and WorkflowsMythical Creature Personality QuizView Controller Containment :::: Encapsulating views in nib :::: communicating game state across controllers and transitions :::: More fun with stack views, Auto Layout, and interface controls 😀✅
<br/> <br/> <div style="text-align: center;"> <img src="./03-navigation-and-workflows/unit-project/MythicalCreatureQuiz/screenshots/screenshot-1.png" width="30%"/> <img src="./03-navigation-and-workflows/unit-project/MythicalCreatureQuiz/screenshots/screenshot-2.png" width="30%"/> <img src="./03-navigation-and-workflows/unit-project/MythicalCreatureQuiz/screenshots/screenshot-3.png" width="30%"/> </div> <div style="text-align: center;"> <img src="./03-navigation-and-workflows/unit-project/MythicalCreatureQuiz/screenshots/screenshot-4.png" width="45%"/> <img src="./03-navigation-and-workflows/unit-project/MythicalCreatureQuiz/screenshots/screenshot-5.png" width="45%"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
3A - Building AR Apps with XcodeSurface CoaterDetecting vertical and horizontal planes in the world :::: Overlaying different colored planes on differently aligned surfaces✅
3A - Building AR Apps with XcodeAR Shots: Shooting hoops with AR Objects and tap detectionTranslating user taps into real-world positions :::: Placing 3D objects when discovered planes are selected :::: Adding physics to an AR scene :::: Positioning new objects relative to the camera's current position.✅
3A - Building AR Apps with XcodeAR Image Finder: Designing a treasure hunt game based upon pre-loaded reference imagesEnabling image detection :::: Specifying which images to locate in the physical world :::: Responding to the discovery of an image :::: Performing simple animations with SceneKit objects✅
3A - Building AR Apps with XcodeAR Drawing: Allow users to choose SceneKit shapes and models from menus and place them in their own scene.Creating nodes from primitive shape settings :::: Loading nodes from a directory of .scn files :::: Changing rendering logic according to user control settings :::: Removing previously added nodes to "Undo" actions✅
4 - Tables and PersistenceEmoji DictionaryCreating grouped table with data sources and static tables via Storyboards :::: Allowing add/edit/delete functionality in a grouped table✅
<br/> <br/> <div style="text-align: center;"> <img src="./04-tables-and-persistence/lesson-projects/EmojiDictionary/Screenshots/recording-1.gif" width="40%"/> <img src="./04-tables-and-persistence/lesson-projects/EmojiDictionary/Screenshots/recording-2.gif" width="40%"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
4 - Tables and PersistenceHotel Europa: An app for hotel staff to register guests.Building custom, intuitive, user-friendly forms to create new model objects and/or track important information. :::: Using custom protocols to pass data between view controllers. :::: How and when to use certain controls for collecting data. :::: Dynamically resizing table view cells.✅
<br/> <br/> <div style="text-align: center;"> <img src="./04-tables-and-persistence/lesson-projects/HotelEuropa/Screenshots/gif-recording.gif" width="40%"/> <img src="./04-tables-and-persistence/lesson-projects/HotelEuropa/Screenshots/gif-recording-2.gif" width="40%"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
5 - Leveraging the WebMusicWireframe: Wireframe of the Apple music app to implement button and player image animations.Animating as a response to user interaction✅
<br/> <br/> <div style="text-align: center;"> <img src="./05-leveraging-the-web/lesson-projects/MusicWireframe/Screenshots/animation-recording-1.gif" width="500px"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
5 - Leveraging the WebContestEntry: Animate based upon the current state of a form.Animating a text field — or seguing if it has text✅
<br/> <br/> <div style="text-align: center;"> <img src="./05-leveraging-the-web/lesson-projects/ContestEntry/Screenshots/animation-recording-1.gif" width="500px"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
5 - Leveraging the WebNASA Astronomy Photo of the Day: Displaying information from the NASA APOD API.Building out a networking layer for asynchronously loading data. :::: Transforming raw Data into models and using them in views. :::: Using loading spinners to provide network activity feedback to users✅
<br/> <br/> <div style="text-align: center;"> <img src="./05-leveraging-the-web/lesson-projects/NASAAstronomyPhotos/Screenshots/screenshot-1.png" width="500px"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
5 - Leveraging the WebiTunes Search API: Allow users to search the iTunes Search API for different media types and view their results in a table view.Using UISearchController and scopes for filtering requests. :::: Architecting networking logic :::: Debouncing search tasks to allow for continuous typing in a search bar. :::: Updating the size of the URL cache to temporarily save images.✅
<br/> <br/> <div style="text-align: center;"> <img src="./05-leveraging-the-web/lesson-projects/iTunesSearch/Screenshots/recording-1.gif" width="500px"/> </div> <br/> <br/>
UnitProjectTopics CoveredProgress
5 - Leveraging the WebRestaurant Menu: An interactive menu for a restaurant that allows the customer to view a list of offerings, add items to an order, and submit the order to the restaurant.Modeling data returning by a server API :::: Architecting networking logic :::: Lazilly fetching images from URL information :::: Maintaining "cart" state in a state controller :::: Dependency-injecting state controllers :::: Communicating loading events using NotificationCenter :::: Saving and restoring application state across app loads✅
<br/> <br/> <div style="text-align: center;"> <img src="./05-leveraging-the-web/unit-project/RestaurantMenu/Screenshots/recording-1.gif" width="500px"/> </div> <br/> <br/>