A simple iOS app similar to iTunes where you can view details of your favorite movies, songs and audio books.

Overview

Popcorn Adventure

This is an iOS app developed by Arthur Tristan M. Ramos who has taken the Appetiser iOS Coding Challenge.

Design Pattern

The design pattern the proponent has used in the project is Model View Controller (MVC), the most well known design pattern in software development. It contains three components: model, view and controller.

Model

Model is the component that handles the data wherein as seen in the code, we use a struct which is the structure of the data to be displayed in the view then manipulated by the controller once the user interacts with the application. In the struct itself, for the developer to gather some data easily, functions are created like getPrice() (Gets the track price if available, otherwise, the collection price).

View

View is the aesthetic part of the application that displays the data for the user. It contains the XiB (Interface Builder) that holds the components where the data is stored and is used to indicate actions of specific components like the arrow pointed to the right in each item of movie, song or audio book given in the project indicating that when you tap the media (e.g. "Stay" by Rihanna), it will lead you to a page that will give more information about the song.

Controller

Controller is the interactive part of the application that helps the user manipulate after doing some actions with the components like displaying the details of the song when the user taps that song (particularly in the delegate function of the table view (list) which is didSelectRowAt. It contains classes known as View Controllers (VCs) that contain functions that directly manipulate the view.

Advantages of MVC

  1. Since it is the most well known design pattern, it is easy for multiple developers to collaborate and work together.
  2. You directly change the behavior of the components in the view directly in the view controller.
  3. Development of application becomes faster due to modularity.
  4. Distinction of which handles the data, design and functionality of the application making it easier to debug

Disadvantages of MVC

  1. Prone to becoming "Massive View Controller," too much use of view controllers neglecting reusability which is a big disadvantage for larger projects.
  2. More time to render when there are new changes in the view
  3. Structure is complex especially when frequent changes in views are needed making it difficult to learn.

Reason for using MVC

The proponent has been most familiar with this design pattern since he has been using this in his projects given the time needed to submit this project.

Extensions

Swift is a class-based object-oriented programming language. Extensions are a unique way of this language to add functionalities to existing classes usually data types like Int, String, collections, classes and delegates. The proponent frequently uses extensions not only to add functionality in existing classes and protocols but to group functions especially in one class for easier tracing.

Functions in Models

Functions return a value. The proponent frequently uses functions in models since the properties and functions in one struct technically are connected to one another. The proponent creates functions for the developer to easily get the data without extra procedures after gathering the data. One biggest example is the getPrice() in the Detail model.

Why Frequent use of Stack Views?

The proponent frequently uses Stack Views because it is a component that automatically adjusts spaces between elements inside it wherein developer will just choose the Fill Equally distribution and provide the spacing between the items inside.

Screenshots of Views

List View

List View

This is the view where user sees the list of movies, songs or audio books available for him/her to view. We have used here UITableView which is the UI component for table view, a view component that uses the concepts of DataSource and Delegate for us to reuse cells that we only edit using one set of functions.

Details View

Details View

This is the view that displays the detail about the movie, song or audio book that he/she selected from the List view. In the list view, we just pass the selected detail from didSelectRowAt in its table view to avoid another network call since our Detail struct is reusable.

Written with StackEdit.

You might also like...
PiPifier - a macOS and iOS Safari extension that lets you use every HTML5 video in Picture in Picture mode
PiPifier - a macOS and iOS Safari extension that lets you use every HTML5 video in Picture in Picture mode

PiPifier is a macOS 10.12 and iOS Safari (action) extension that lets you use every HTML5 video in Picture in Picture mode macOS Download It'

A lightweight app to play videos from the Files app in a better (dark) interface which avoids losing your playback position.
A lightweight app to play videos from the Files app in a better (dark) interface which avoids losing your playback position.

Playerly Playerly is a very lightweight Swift app that allows you to select a file (video or movie) from the built in Document Browser, and play it in

MMPlayerView - Custom AVPlayerLayer on view and transition player with good effect like youtube and facebook
MMPlayerView - Custom AVPlayerLayer on view and transition player with good effect like youtube and facebook

MMPlayerView Demo-Swift List / Shrink / Transition / Landscape MMPlayerLayer ex. use when change player view frequently like tableView / collectionVie

📽 A video player for SwiftUI, support for caching, preload and custom control view.
📽 A video player for SwiftUI, support for caching, preload and custom control view.

Features QuickStart Advances Installation Requirements License Demo Clone or download the project. In the terminal, run swift package resolve. Open Vi

Pretty iOS mobile screens + AVPlayer video view ––– made in SwiftUI
Pretty iOS mobile screens + AVPlayer video view ––– made in SwiftUI

UrbanVillageProjectScreens Recreated UI screens from the conceptual Urban Village Project. Read more about the project here. Please open an issue if y

Swift library for embedding and controlling YouTube videos in your iOS applications via WKWebView!

YouTubePlayer Embed and control YouTube videos in your iOS applications! Neato, right? Let's see how it works. 0.7.0 Update: WKWebView breaking change

Overlay alpha channel video animation player view using Metal.
Overlay alpha channel video animation player view using Metal.

Overlay alpha channel video animation player view using Metal. Example To run the example project, clone the repo, and run pod install from the Exampl

Video view controller with Periscope fast rewind control
Video view controller with Periscope fast rewind control

Periscope-VideoViewController Video view controller with Periscope fast rewind control. Tutorial on how to create this component can be found here. Re

View Rails casts video on Apple TV
View Rails casts video on Apple TV

View Rails casts video on Apple TV To run the app locally on your TVOS or Apple TV Clone the app Enter the http://iosvideokit.com/ license details in

Owner
Arthur Tristan M. Ramos
I am currently an iOS Mobile App Engineer at EasyPos Solutions, Inc. and also a self-made full stack developer working on a project called PythoMy.
Arthur Tristan M. Ramos
ABMediaView can display images, videos, as well as now GIFs and Audio!

Media view which subclasses UIImageView, and can display & load images, videos, GIFs, and audio and from the web, and has functionality to minimize from fullscreen, as well as show GIF previews for videos.

Andrew Boryk 80 Dec 20, 2022
Manga, anime, shows & movies tracker

Lists Manga, anime, shows & movies tracker Here is a preivew for the app edit: added top anime and manga recommendation using Jikan API

null 7 Oct 28, 2021
JDVideoKit - You can easily transfer your video into Three common video type.

JDVideoKit Introduction You can easily transfer your video into Three common video type. You can use set up camera easily. Installation pod 'JDVideoK

郭介騵 24 Sep 9, 2021
​ This framework allows developers to quickly manipulate audio and video splicing operations.

MTrack This framework allows developers to quickly manipulate audio and video splicing operations.We welcome your feedback in issues and pull requests

null 1 Nov 15, 2021
Nextcloud Talk is a fully on-premises audio/video and chat communication service

Nextcloud Talk iOS app Video & audio calls and chat through Nextcloud on iOS Nextcloud Talk is a fully on-premises audio/video and chat communication

Nextcloud 112 Dec 26, 2022
A reactive audio player for iOS using RxSwift

ESAudioPlayer: A reactive audio player for iOS ESAudioPlayer is a reactive audio player for iOS using RxSwift. It provides basic audio management feat

Extreme Solution 4 Jun 22, 2022
High-quality Interactive Audio/Video Unity SDK

简体中文 | English TRTC Unity SDK Overview Leveraging Tencent's many years of experience in network and audio/video technologies, Tencent Real-Time Commun

LiteAVSDK 8 Dec 23, 2022
iOS video player for trailer. You can customize layout for the control panel. Support PiP and DRM.

iOS video player for trailer. You can customize layout for the control panel. Support PiP and DRM.

Abe Wang 11 Nov 7, 2022
The main goal of this mini project is to inspire you on what we can accomplish with the SwiftUI framework.

COMPLEX SWIFTUI GESTURES We will create such a custom button with complex gestures that we can not find in Apple’s stock user interface library. PARALLAX EFFECT By using multiple movements in the opposite direction (parallax effect) we can add depth to this amazing onboarding screen.

Ghullam Abbas 4 Oct 17, 2022
Player View is a delegated view using AVPlayer of Swift

PlayerView [![CI Status](http://img.shields.io/travis/David Alejandro/PlayerView.svg?style=flat)](https://travis-ci.org/David Alejandro/PlayerView) An

null 131 Oct 25, 2022