This project uses cocoapods
to manage libraries dependencies. Although either checking in libraries files or not is fine, this project does not include the libraries folder due to the fact that one of the files is bigger than the size limit GitHub allows.
To use this project, you will need the following instaled on your machine:
- Xcode 9 or later
- iOS 9 or later
- CocoaPods
-
If you have not installed CocoaPods, install CocoaPods by running the command:
$ gem install cocoapods $ pod setup
Depending on your system settings, you may have to use
sudo
for installingcocoapods
as follows:$ sudo gem install cocoapods $ pod setup
-
Then run the following command:
$ pod install
-
Open up
*.xcworkspace
with Xcode and start using the project.Note: Do NOT use
*.xcodeproj
. If you open up a project file instead of a workspace, you receive an error
-
Model
AlbumViewModel
- Stores an Album information, such as album name and a list of its assets.AlbunsDataSet
- Conforms toAlbunsDataSetProtocol
. Manages and store a list of Albuns. Provides methods to access Albuns' informations.
-
AlbunsInteractor
- Conforms toAlbunsInteractorProtocol
. Fetch a collection of Albuns fromPHAssetCollection
andPHCollectionList
and return aAlbunsDataSetProtocol
. -
AlbunsPresenter
- Conforms toAlbunsUserInterfaceEventHandler
. Respond to view events and is resposible for fetching data from anAlbunsInteractorProtocol
, convert it to displayable data objects, and send this for the view (AlbunsUserInterfaceProtocol
) to display the data. The view is driven by this presenter, and this knows "when" things should happen while the view can get focused on aknowledge "how" things happen. -
UI
AlbumCollectionViewCell
- Subclass ofUICollectionViewCell
built to display an Album information inside a collection view. Contains an image that shows the latest photo from the given Album, an icon indicating if it is a Favorite Album, the name of the Album and how many assets it contains.AlbumCollectionViewHeader
- Subclass ofUICollectionReusableView
built to display the name of a collection of albuns. Is used as a header by the Albuns collection view.AlbunsViewController
- Subclass ofUIViewController
and conforms toAlbunsUserInterfaceProtocol
and implement methods to display aAlbunsDataSetProtocol
data in a collection view. The collection view it shows has a header with the name of the collection and a list of albuns inside the collection.
-
AlbumItemsPresenter
- Conforms toAlbumItemsUserInterfaceEventHandler
. Responds to events and drives aAlbumItemsUserInterfaceProtocol
user interface. Holds anAlbumViewModel
view model and asks a view to display the album information and items. -
UI
-
AlbumItemCollectionViewCell
- Subclass ofUICollectionViewCell
built to display an album item, such as a video or photo. It contains a thumbnail of the item, an icon indicating if it is a Favorite item or not, and if it is a video it shows its duration. -
AlbumItemsViewController
- Subclass ofUIViewController
and conforms toAlbumItemsUserInterfaceProtocol
. Shows the title of the album and a list with the album items in a collection view.
-
- UI
Photo360VRViewController.m
- Shows a photo in 360 degrees either Panorama and Spherical. Also provides a Virtual Reality mode that can be used to view the photo in Virtual Reality glasses such as Google Cardboard. Written inObjective C
because of compatibilities withGVR
SDK.
- UI
Video360VRViewController.m
- Shows a video in 360 degrees either Panorama and Spherical. Also provides a Virtual Reality mode that can be used to view the video in Virtual Reality glasses such as Google Cardboard. Written inObjective C
because of compatibilities withGVR
SDK.
Import Objective C
files to Swift.
- Importing
Video360VRViewController
andPhoto360VRViewController
, so theAlbumItemsViewController
, which is written in Swift, can launch them.
Visit my LinkedIn to leave feedback and connect.
William Marques Hass
See the LICENSE file for more info.