diff --git a/AppScreenshots/la-banner-ip14.webp b/AppScreenshots/la-banner-ip14.webp new file mode 100644 index 0000000..57b6af9 Binary files /dev/null and b/AppScreenshots/la-banner-ip14.webp differ diff --git a/AppScreenshots/la-banner-ip14pro.webp b/AppScreenshots/la-banner-ip14pro.webp new file mode 100644 index 0000000..3a0a257 Binary files /dev/null and b/AppScreenshots/la-banner-ip14pro.webp differ diff --git a/AppScreenshots/la-da-expanded-ip14pro.webp b/AppScreenshots/la-da-expanded-ip14pro.webp new file mode 100644 index 0000000..72dc1dd Binary files /dev/null and b/AppScreenshots/la-da-expanded-ip14pro.webp differ diff --git a/AppScreenshots/la-da-iphone14pro.webp b/AppScreenshots/la-da-iphone14pro.webp new file mode 100644 index 0000000..2079cdc Binary files /dev/null and b/AppScreenshots/la-da-iphone14pro.webp differ diff --git a/AppScreenshots/sim-app-ip14pro.webp b/AppScreenshots/sim-app-ip14pro.webp new file mode 100644 index 0000000..a53a914 Binary files /dev/null and b/AppScreenshots/sim-app-ip14pro.webp differ diff --git a/README.md b/README.md index cf6fdcc..c9e7be4 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,13 @@ LAs are iPhone only. - For DI: iPhone 14 Pro/Pro Max with iOS 16.1+ ## Screenshots -tbd +| App View | Banner iPhone 14 | Banner iPhone 14 Pro | +| :---: | :---: | :---: | +| | | | + +| LADI iPhone14Pro | LADI expanded iPhone14Pro | +| :---: | :---: | +| | | ## Architecture The App Architecture is built using the following patterns: @@ -92,7 +98,9 @@ I am using the following design patterns to solve common challenges: - [Delegation Pattern](https://en.wikipedia.org/wiki/Delegation_pattern): We know the [Delegate and Protocol Pattern](https://www.youtube.com/watch?v=qiOKO8ta1n4) best from UIKit. Here we use it as 1to1 communication pattern in order that the GameModel class (as the delegate) can communicate with the GameSimulator class. ## How does it work? -- By pressing the _Start Game Sim_, the GameSimulator "factory" spits out a new GameState every 2 seconds +- By pressing the _Start Game Simulation_, the GameSimulator "factory" spits out a new GameState every 2 seconds. It is restricted to be started only once. +- By pressing _Start Live Activity_, the Live Activity can be started. It is restricted to be started only once. +- The Live Activity updates while the App is running in the background. This is only possible because the background mode 'Audio, AirPlay,...' is enabled. - The GameView and the Live Activity updates with every (new) GameState change - The GameModel is (the glue) between the GameView and the GameSimulator - The GameSimulator stops automatically after 120 ball possessions in total @@ -180,10 +188,17 @@ Following this [guide](https://www.youtube.com/watch?v=_sfzAOfY8uc). - [Displaying live data with Live Activities](https://developer.apple.com/documentation/activitykit/displaying-live-data-with-live-activities) - [Live Activities - Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/components/system-experiences/live-activities) - ## Credits 🙏🏽 Sean Allen +## Extra: Xcode shortcuts +- CMD + B: build the project +- CMD + R: build and run the App in the simulator +- CMD + SHIFT + K: clean build folder +- CMD + SHIFT + O: open quick search +- CMD + SHIFT + J: highlight the selected open file in the navigator +- CMD + SHIFT + L: open up the library (Snippets, Media, Colors, SF Symbols) +
Made with a 🙂 Simon Berner