MovieSwiftUI is an application that uses the MovieDB API and is built with SwiftUI

Related tags

MovieSwiftUI
Overview

Xcode build

MovieSwiftUI

MovieSwiftUI is an application that uses the MovieDB API and is built with SwiftUI. It demos some SwiftUI (& Combine) concepts. The goal is to make a real world application using SwiftUI only. It'll be updated with new features as they come to the SwiftUI framework.

I have written a series of articles that document the design and architecture of the app: Making a Real World Application With SwiftUI.

App Image

Architecture

MovieSwiftUI data flow is a subset and a custom implementation of the Flux part of Redux. It implement the State in an ObservableObject as a @Published wrapped property, so changes are published whenever a dispatched action produces a new state after being reduced. The state is injected as an environment object in the root view of the application, and is easily accessible anywhere in the application. SwiftUI does all aspects of diffing on the render pass when your state changes. No need to be clever when extracting props from your State, they're simple dynamic vars at the view level. No matter your objects' graph size, SwiftUI speed depends on the complexity of your views hierarchy, not the complexity of your object graph.

SwiftUI

MovieSwiftUI is in pure Swift UI, the goal is to see how far SwiftUI can go in its current implementation without using anything from UIKit (basically no UIView/UIViewController representable).

It'll evolve with SwiftUI, every time Apple edits existing or adds new features to the framework.

Platforms

Currently MovieSwiftUI runs on iPhone, iPad, and macOS.

Follow me on Twitter to get the latest update about features, code and SwiftUI tips and tricks!

Issues
  • Segmented state not shown

    Segmented state not shown

    Not sure if somebody noticed this already? I tried this in the simulator (iPhone 11 Pro Max 13.4)

    Screen Recording 2020-03-27 at 16 29 24

    opened by ristkof 12
  • Project Compile Failed

    Project Compile Failed

    I downloaded project and when start compile then it failed. Please suggest me to work properly. Screenshot 2019-06-23 at 11 55 11 am Screenshot 2019-06-23 at 11 55 22 am Screenshot 2019-06-23 at 11 55 31 am Screenshot 2019-06-23 at 11 55 38 am

    opened by sandeepsuthar 10
  • Trailer implementation

    Trailer implementation

    Hi, first I have to say it is a nice job. Great SwiftUI example!

    One question, are you going to implement the trailer option of the film?

    Thank you!

    opened by wazowski78 7
  • UserDetaultWrapper.swift -> public var wrappedValue: T {... never sets value

    UserDetaultWrapper.swift -> public var wrappedValue: T {... never sets value

    UserDetaultWrapper.swift -> public var wrappedValue: T {... never sets value

    the get { return ...} is called but never the set {...} so the value stored in the UserDefault never changes

    opened by alancook 6
  • TabbedView forgets state

    TabbedView forgets state

    If you tap a movie in the movies tab, then tap the "My Lists" tab, then switch back to the movies tab, the app forgets that you tapped a movie and resets to the standard view.

    I'm currently playing around with TabbedView in a different project and would be interested on how you would solve this. As far as I understand views are supposed to be "disposable", but storing the state of the subviews in the TabbedView itself feels wrong too...

    opened by hactar 6
  • iOS 14 Beta 4 & 5 crash

    iOS 14 Beta 4 & 5 crash

    When scrolling through MoviesList or MovieDetail, the app crashes: Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [inf nan]

    opened by bark1n9 6
  • App Crashes

    App Crashes

    Hello,

    The app crashes as soon as I scroll the list of movies. What am I doing wrong?

    Also I love this app, why is it not on the App Store?

    opened by jbrown8834 4
  • error when building

    error when building

    1

    opened by lexuanquynh 4
  • Fix/issue 35 exc bad access

    Fix/issue 35 exc bad access

    Fix issue #35 which was caused due to a an animation added in commit b46e53a35aa4053df085af10bd72cf29b2ba4fa7.

    opened by doronkatz 4
  • [DRAFT] iOS 15+ support

    [DRAFT] iOS 15+ support

    opened by Dimillian 0
  • Add placeholder image if request fails

    Add placeholder image if request fails

    Thought this would be nice to have if for any reason the request fails. Would like to hear your thoughts about this whenever you can 🙃 @Dimillian

    This is how it would look like ( I just broke the urls): | Dark Mode | Light Mode | |:-----------------:|:---------------------:| |Could not load image|Could not load image|

    opened by NicolasCombe5555 0
  • Memorey Issue When we go to the multiple screen

    Memorey Issue When we go to the multiple screen

    Hello Mate ,

    Can you please check the memorey problem

    opened by AhmadDurrani579 0
  • List row remains highlighted

    List row remains highlighted

    I have observed that the List row remains highlighted when we come back from detail screen as shown in Screenshot. I have tried multiple things to resolve this but didn't find any solution. Ultimately I ended up using LazyVStack inside ScrollView in my application. I have observed when we keep List inside any container like VStack, Group etc this issue happens. As in MovieSwift app it happens for Movies Tab but not for Fan Club and My Lists. simulator_screenshot_F54EBA25-FCB8-49C2-9A79-B8D014D3E09E

    opened by chitvan832 0
  • contextMenu selects whole HStack

    contextMenu selects whole HStack

    For example in PeopleRow when you press and hold on a person it selects whole hstack and when you tap on "Add to fan club" it adds first person in that hstack.

    Ekran Resmi 2020-07-10 01 03 28
    opened by bark1n9 0
  • Remove store variable for better performance

    Remove store variable for better performance

    As long as a view has a reference to global store. Any update on store from other places will force to refresh the view.

    On the other hand, in order to dispatch an action, we have to use global store within a view. So i think it's a drawback of this structure.

    opened by ghost 1
  • Chinese introduce

    Chinese introduce

    opened by Tliens 0
Owner
Thomas Ricouard
[Entrepreneur, iOS/Mac & Web dev] Work @Medium / @Glose Past: @google, Co-Founded @MySeeen (Share movies !) @RobinBrowser (The smart Browser).
Thomas Ricouard
Acid Cam v2 for macOS distorts video to create art.

Acid.Cam.v2.OSX [VERSION: 2.77.0 (macOS)] If you want to support the development of this software (not required) you can do so here: https://lostsided

Jared Bruni 85 Sep 20, 2021
The modern video player for macOS.

IINA IINA is the modern video player for macOS. Website · Releases · Telegram Group Features Based on mpv, which provides the best decoding capacity o

IINA 28k Sep 20, 2021
OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows, and is dedicated to delivering high quality video editing and animation solutions to the world.

OpenShot Video Editor is an award-winning free and open-source video editor for Linux, Mac, and Windows, and is dedicated to delivering high quality v

OpenShot Studios, LLC 2.3k Sep 19, 2021
A macOS app to parse face landmarks from a video for GANs training

Face Data A macOS application used to auto-annotate landmarks from a video. Those landmarks can further be used as training data for Generative Advers

Jay Wang 60 Sep 12, 2021
This package allows macOS Finder to display thumbnails, static QuickLook previews, cover art and metadata for most types of video files.

QuickLook Video This package allows macOS Finder to display thumbnails, static previews, cover art and metadata for most types of video files. QuickLo

Jonathan Harris 1.8k Sep 16, 2021
👨‍💻Watch the latest and greatest conference videos on your Mac

Conferences.digital is the best way to watch the latest and greatest videos from your favourite developer conferences for free on your Mac. Either sea

Timon Blask 763 Sep 20, 2021
A nifty Mac OS X app to browse and download YouTube videos

Yoda Yoda is a nifty osx application which enables you to browse and download videos from YouTube. Built using ReactJS & Electron Download latest vers

Anand Annavajhala 403 Aug 5, 2021
GNU Gatekeeper - H.323 server for VoIP and videoconferencing

GNU Gatekeeper A H.323 gatekeeper for video conferencing and VoIP. The GNU Gatekeeper can be the central server for an IP telephony (VoIP) or video co

Jan Willamowius 38 Aug 20, 2021
Catch YouTube into your macOS menu bar! 🦄

MenuTube for macOS Download | Website | Red Nuclear Monkey Do you enjoy listening to YouTube's podcasts, audiobooks, interviews or anything else that

Egor Danchenkov 104 Jul 11, 2021
Datamosh your videos on macOS

Datamosh Datamosh your videos on macOS Quick Start Download the rep Clone the rep: git clone https://[email protected]:roecrew/Datamosh.git then Open the

Brandon Barber 68 Sep 6, 2021
❤️ Streaming torrent app for Mac, Windows, and Linux

WebTorrent Desktop The streaming torrent app. For Mac, Windows, and Linux. Install Recommended Install Download the latest version of WebTorrent Deskt

WebTorrent 8.4k Sep 16, 2021
HandBrake's main development repository

HandBrake HandBrake is an open-source video transcoder available for Linux, Mac, and Windows, licensed under the GNU General Public License (GPL) Vers

HandBrake 8.4k Sep 23, 2021
Transcribe and generate caption files (SRT and FCPXML) without manually entering time codes.

Quick Caption Quick Caption is your one-stop solution to transcribe video or audio clips, then automatically apply timecode throughout the transcripti

Luming Yin 35 Sep 16, 2021
VLC media player - All pull requests are ignored, please follow https://wiki.videolan.org/Sending_Patches_VLC/

README for the VLC media player =============================== VLC is a popular libre and open source media player and multimedia engine, used by a

VideoLAN 8k Sep 17, 2021