Skip to content

This is a YouTube like iOS app sample with the Model-View-Presenter pattern.

License

Notifications You must be signed in to change notification settings

marty-suzuki/YouTubeSampleWithMVP-DiffableDataSource

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

YouTubeSampleWithMVP-DiffableDataSource

This is a YouTube like app sample with the Model-View-Presenter pattern. It uses DiffableDataSource to display search view and detail view.

Getting Started

Let's create you project on Google Cloud Platform and add an API Key to access YouTube Data API v3. https://console.cloud.google.com/apis/credentials

If you could create an API key, add it to Info.plist as YouTubeApiKey.

View Structure

Detail.Item relates to Views.

Detail.Item View
.summary DetailSummaryView
.channel DetailChannelView
.description DetailDescriptionView
.video VideoView
.loading LoadingView

Detail.Item is appended to NSDiffableDataSourceSnapshot with any Detail.Section and reflects snapshot to UITableView.

enum Detail {
    enum Section: Hashable {
        case information
        case videos(segments: [VideoSegment])
        case loading
    }

    enum Item: Hashable {
        case summary(SummaryViewData)
        case channel(ChannelViewData)
        case description(String)
        case video(VideoViewData)
        case loading
    }
    ...
}
View Snapshot
stackView.axis = .vertical

When you tap a triangle button on DetailSummaryView, Item.descriptin is inserted to bottom of Section.information. If that state is refrected to UITableView, it displays DetailDescriptionView with fade animation.

View Snapshot
stackView.axis = .vertical

When you rotate your device, stackview.axis is changed to .horizontal. The layout will change that left side is player, right side is UITableView.

View Snapshot
stackView.axis = .horizontal

Requirement

  • Xcode 12.4
  • iOS 14.1
  • Nuke

License

YouTubeSampleWithMVP-DiffableDataSource is available under the MIT license. See the LICENSE file for more info.

About

This is a YouTube like iOS app sample with the Model-View-Presenter pattern.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published