- Fixed the issue of next and pervious buttons not showing
- Added the trailer button to season episode. - Trailer language will be based on the category selected - Reversed data for continue watching - Added html text convert from response for showing description - Handled the fav and likes from episodes Screen
This commit is contained in:
@@ -74,6 +74,7 @@
|
||||
527AC6FD2C173A5100434FB7 /* SongListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527AC6FB2C173A5100434FB7 /* SongListCell.swift */; };
|
||||
527AC6FE2C173A5100434FB7 /* SongListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 527AC6FC2C173A5100434FB7 /* SongListCell.xib */; };
|
||||
527AC7012C182DCE00434FB7 /* TimeStringToSeconds.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527AC7002C182DCE00434FB7 /* TimeStringToSeconds.swift */; };
|
||||
528BEF602C2C372900FFDAB8 /* ContinueWatchingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528BEF5F2C2C372900FFDAB8 /* ContinueWatchingVC.swift */; };
|
||||
528E5F1B2C24531200E33E4E /* SeasonListingDM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */; };
|
||||
528E5F222C24660F00E33E4E /* SeasonCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */; };
|
||||
528E5F232C24660F00E33E4E /* SeasonCategoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 528E5F212C24660F00E33E4E /* SeasonCategoryCell.xib */; };
|
||||
@@ -328,6 +329,7 @@
|
||||
527AC6FB2C173A5100434FB7 /* SongListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SongListCell.swift; sourceTree = "<group>"; };
|
||||
527AC6FC2C173A5100434FB7 /* SongListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SongListCell.xib; sourceTree = "<group>"; };
|
||||
527AC7002C182DCE00434FB7 /* TimeStringToSeconds.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeStringToSeconds.swift; sourceTree = "<group>"; };
|
||||
528BEF5F2C2C372900FFDAB8 /* ContinueWatchingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContinueWatchingVC.swift; sourceTree = "<group>"; };
|
||||
528E5F1A2C24531200E33E4E /* SeasonListingDM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonListingDM.swift; sourceTree = "<group>"; };
|
||||
528E5F202C24660F00E33E4E /* SeasonCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeasonCategoryCell.swift; sourceTree = "<group>"; };
|
||||
528E5F212C24660F00E33E4E /* SeasonCategoryCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SeasonCategoryCell.xib; sourceTree = "<group>"; };
|
||||
@@ -979,6 +981,7 @@
|
||||
52DAC64D2C21775300E2F85B /* WebSeriesVC.swift */,
|
||||
5242FE582C24203E0086A86D /* WebSeriesSeasonVC.swift */,
|
||||
52E214C62C2AD47F00BC2D29 /* EpisodeDetailsVC.swift */,
|
||||
528BEF5F2C2C372900FFDAB8 /* ContinueWatchingVC.swift */,
|
||||
);
|
||||
path = Controller;
|
||||
sourceTree = "<group>";
|
||||
@@ -1581,6 +1584,7 @@
|
||||
9C834EC62C1C1D9500B29A9C /* BlogDetailsVC.swift in Sources */,
|
||||
9CBCB2A52BE50D49007D7934 /* NewPasswordVC.swift in Sources */,
|
||||
9CBCB29F2BE4E13A007D7934 /* ValidatorClass.swift in Sources */,
|
||||
528BEF602C2C372900FFDAB8 /* ContinueWatchingVC.swift in Sources */,
|
||||
9CBCB29B2BE4D614007D7934 /* LoginVC.swift in Sources */,
|
||||
52BC3BE82C0E04A9002FACA6 /* FaqListDM.swift in Sources */,
|
||||
9C56E83B2BDBC6E600E4CA14 /* SelectAgeVM.swift in Sources */,
|
||||
|
||||
@@ -19,5 +19,8 @@
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ extension K{
|
||||
static let moreVC = "MoreVC"
|
||||
static let radioVC = "RadioVC"
|
||||
static let blogDetailsVC = "BlogDetailsVC"
|
||||
static let playerVC = "PlayerVC"
|
||||
}
|
||||
|
||||
struct SideBarNav{
|
||||
@@ -62,6 +63,7 @@ extension K{
|
||||
static let webSeriesVC = "WebSeriesVC"
|
||||
static let webSeriesSeasonVC = "WebSeriesSeasonVC"
|
||||
static let episodeDetailsVC = "EpisodeDetailsVC"
|
||||
static let continueWatchingVC = "ContinueWatchingVC"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,3 +226,9 @@
|
||||
"CONTINUE WATCHING" = "देखना जारी रखें";
|
||||
"PLAY TRAILER" = "प्ले ट्रेलर";
|
||||
"Teaser" = "टीज़र";
|
||||
"WATCH" = "देखें";
|
||||
"ADD" = "अप्रिय";
|
||||
"ADDED" = "प्रिय";
|
||||
"SHARE" = "शेयर";
|
||||
"LIKE" = "पसंद";
|
||||
"LIKED" = "पसंदिता";
|
||||
|
||||
@@ -13,7 +13,9 @@ class PlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate {
|
||||
|
||||
@IBOutlet weak var innerPlayerView: UIView!
|
||||
var previousScale: CGFloat = 1.0
|
||||
// let backButton = UIButton(type: .system)
|
||||
|
||||
var contentType : VideoContentType?
|
||||
|
||||
var config: JWPlayerConfiguration!
|
||||
var dismissTapped: (() -> Void)?
|
||||
var videoIndex : Int?
|
||||
@@ -54,7 +56,7 @@ class PlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate {
|
||||
|
||||
//Disable Picture in Picture
|
||||
playerView.allowsPictureInPicturePlayback = false
|
||||
// playerView.captionStyle = .none
|
||||
playerView.captionStyle = .none
|
||||
}
|
||||
|
||||
@objc func applicationDidBecomeActive() {
|
||||
@@ -86,37 +88,38 @@ class PlayerVC: JWPlayerViewController, JWPlayerViewControllerDelegate {
|
||||
override func jwplayer(_ player: any JWPlayer, didFinishLoadingWithTime loadTime: TimeInterval) {
|
||||
super.jwplayer(player, didFinishLoadingWithTime: loadTime)
|
||||
print("LoadTime", loadTime)
|
||||
// self.player.play()
|
||||
}
|
||||
|
||||
//Playlist Functions
|
||||
//
|
||||
// override func jwplayer(_ player: any JWPlayer, didLoadPlaylist playlist: [JWPlayerItem]) {
|
||||
// print("DidLoad", playlist.count , playlist)
|
||||
//// player.loadPlayerItemAt(index: videoIndex ?? 0)
|
||||
//// player.play(relatedContent: videoIndex ?? 0)
|
||||
//
|
||||
|
||||
// override func jwplayerHasSeeked(_ player: any JWPlayer) {
|
||||
//// if player.getState() != .playing{
|
||||
//// print("Again Play")
|
||||
//// player.play()
|
||||
//// }
|
||||
// print("Seeked " , player.getState())
|
||||
// }
|
||||
//
|
||||
override func jwplayerHasSeeked(_ player: any JWPlayer) {
|
||||
// player.play()
|
||||
if player.getState() != .playing{
|
||||
print("Again Play")
|
||||
player.play()
|
||||
}
|
||||
print("Seeked")
|
||||
}
|
||||
|
||||
override func jwplayer(_ player: any JWPlayer, didLoadPlaylistItem item: JWPlayerItem, at index: UInt) {
|
||||
// player.loadPlayerItemAt(index: 4)
|
||||
// player.play(relatedContent: 4)
|
||||
print("Item" , item)
|
||||
}
|
||||
|
||||
override func jwplayerIsReady(_ player: JWPlayer) {
|
||||
super.jwplayerIsReady(player)
|
||||
// player.seek(to: 30)
|
||||
// player.play()
|
||||
switch contentType {
|
||||
case .liveStream:
|
||||
player.play()
|
||||
case .webSeries:
|
||||
if videoIndex == 0{
|
||||
player.play()
|
||||
}else{
|
||||
player.nextUpPlaylistIndex = videoIndex ?? 0
|
||||
player.next()
|
||||
}
|
||||
case .trailer:
|
||||
player.play()
|
||||
case .continueWatching:
|
||||
player.play()
|
||||
case nil:
|
||||
break
|
||||
}
|
||||
|
||||
print("IsReady")
|
||||
}
|
||||
|
||||
|
||||
@@ -221,7 +221,6 @@ class ThemeOneVM{
|
||||
// Create a JWPlayerItem
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(liveStreamURL)
|
||||
.title("Testing Title")
|
||||
.build()
|
||||
|
||||
// Create a JWPlayerConfiguration
|
||||
@@ -232,6 +231,7 @@ class ThemeOneVM{
|
||||
|
||||
vc.config = config
|
||||
vc.dismissTapped = self.tapped
|
||||
vc.contentType = .liveStream
|
||||
vc.modalPresentationStyle = .overFullScreen
|
||||
|
||||
// Present the PlayerVC
|
||||
@@ -250,56 +250,6 @@ class ThemeOneVM{
|
||||
Utilities.dismissProgressHUD()
|
||||
}
|
||||
}
|
||||
|
||||
// @objc func handleTap(_ sender: UITapGestureRecognizer) {
|
||||
// Utilities.startProgressHUD(msg: "Loading...")
|
||||
// print("tapped")
|
||||
// let vc = self.vc.storyboard?.instantiateViewController(identifier: "PlayerVC") as! PlayerVC
|
||||
//
|
||||
// DispatchQueue.main.async {
|
||||
// do {
|
||||
// // Create a JWMediaTrack with the thumbnails .vtt file
|
||||
// // let thumbnailTrack = try JWThumbnailTrackBuilder()
|
||||
// // .file(URL(string:"https://content.jwplatform.com/videos/Agy4RIje-Ysj2G4DQ.mp4")!)
|
||||
// // .build()
|
||||
//
|
||||
// // Create a JWPlayerItem
|
||||
// let item = try JWPlayerItemBuilder()
|
||||
// .file(URL(string: self.liveStreamURL)!)
|
||||
// .title("Testing Title")
|
||||
//// .posterImage(URL(string: "https://img.freepik.com/free-photo/painting-mountain-lake-with-mountain-background_188544-9126.jpg")!)
|
||||
// // .mediaTracks([thumbnailTrack])
|
||||
// .build()
|
||||
//
|
||||
// // Create a config, and give it the item as a playlist.
|
||||
// let config = try JWPlayerConfigurationBuilder()
|
||||
// .playlist(items: [item])
|
||||
// .autostart(true)
|
||||
//// .preload(.auto)
|
||||
//// .repeatContent(true)
|
||||
// .build()
|
||||
//
|
||||
// vc.config = config
|
||||
// vc.dismissTapped = self.tapped
|
||||
//
|
||||
// vc.modalPresentationStyle = .overFullScreen
|
||||
// Utilities.dismissProgressHUD()
|
||||
// self.vc.present(vc, animated: false) {
|
||||
// self.stopLiveStream()
|
||||
// vc.transitionToFullScreen(animated: true) {
|
||||
// print("FullScreen")
|
||||
// }
|
||||
// // vc.setDeviceOrientation(orientation: .landscapeRight)
|
||||
// }
|
||||
//// Utilities.dismissProgressHUD()
|
||||
//// self.vc.navigationController?.pushViewController(vc, animated: true)
|
||||
//// self.stopLiveStream()
|
||||
// }
|
||||
// catch {
|
||||
// // Handle Error
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
func tapped(){
|
||||
Timer.scheduledTimer(withTimeInterval: 0.2, repeats: false) { _ in
|
||||
|
||||
@@ -81,7 +81,6 @@ class ThemeTwoVM{
|
||||
// Create a JWPlayerItem
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(URL(string: self.liveStreamURL)!)
|
||||
.title("Testing Title")
|
||||
// .posterImage(URL(string: "https://img.freepik.com/free-photo/painting-mountain-lake-with-mountain-background_188544-9126.jpg")!)
|
||||
// .mediaTracks([thumbnailTrack])
|
||||
.build()
|
||||
@@ -96,7 +95,7 @@ class ThemeTwoVM{
|
||||
|
||||
vc.config = config
|
||||
vc.dismissTapped = self.tapped
|
||||
|
||||
vc.contentType = .liveStream
|
||||
vc.modalPresentationStyle = .overFullScreen
|
||||
Utilities.dismissProgressHUD()
|
||||
self.vc.present(vc, animated: false) {
|
||||
|
||||
84
WOKA/WebSeries/Controller/ContinueWatchingVC.swift
Normal file
84
WOKA/WebSeries/Controller/ContinueWatchingVC.swift
Normal file
@@ -0,0 +1,84 @@
|
||||
//
|
||||
// ContinueWatchingVC.swift
|
||||
// WOKA
|
||||
//
|
||||
// Created by MacBook Pro on 26/06/24.
|
||||
//
|
||||
|
||||
import UIKit
|
||||
|
||||
class ContinueWatchingVC: UIViewController {
|
||||
|
||||
@IBOutlet weak var watchingImage: UIImageView!
|
||||
@IBOutlet weak var watchingTitle: UILabel!
|
||||
@IBOutlet weak var watchingDesc: UITextView!
|
||||
|
||||
var watchData : ContinueWatchingDM.ResultData?
|
||||
|
||||
// This ID is from webseries main screen, where user selectes
|
||||
var categoryID : Int?
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
if watchData != nil{
|
||||
setData()
|
||||
}
|
||||
}
|
||||
|
||||
func setData(){
|
||||
guard let watchData else{return}
|
||||
|
||||
if let url = watchData.thumbnailPath{
|
||||
self.watchingImage.imageURL(url, color: .black)
|
||||
}
|
||||
|
||||
if AuthFunc.shareInstance.getDefaultLanguage() == .english{
|
||||
guard let englishData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 1}).first else{return}
|
||||
watchingTitle.text = englishData.title
|
||||
if let desc = englishData.description?.replacingOccurrences(of: "<br>", with: "").htmlToAttributedString{
|
||||
let sizeText = NSMutableAttributedString(attributedString: desc)
|
||||
sizeText.setFontFace(font: FontCustom.shareInstance.customFont(fontName: .Exo2_Regular, size: 15),color: UIColor.appColor(.TextDarkBlue)!)
|
||||
self.watchingDesc.attributedText = sizeText
|
||||
}
|
||||
}else{
|
||||
guard let hindiData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 2}).first else{return}
|
||||
watchingTitle.text = hindiData.title
|
||||
if let desc = hindiData.description?.replacingOccurrences(of: "<br>", with: "").htmlToAttributedString{
|
||||
let sizeText = NSMutableAttributedString(attributedString: desc)
|
||||
sizeText.setFontFace(font: FontCustom.shareInstance.customFont(fontName: .Exo2_Regular, size: 15),color: UIColor.appColor(.TextDarkBlue)!)
|
||||
self.watchingDesc.attributedText = sizeText
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func watchBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
guard let watchData else{return}
|
||||
var playerItem = JwPlayerItemCreate(url: "", poster: "", titles: "")
|
||||
playerItem.poster = watchData.thumbnailPath
|
||||
if AuthFunc.shareInstance.getDefaultLanguage() == .english{
|
||||
guard let englishData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 1}).first else{return}
|
||||
playerItem.titles = englishData.title
|
||||
}else{
|
||||
guard let hindiData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 2}).first else{return}
|
||||
playerItem.titles = hindiData.title
|
||||
}
|
||||
|
||||
if categoryID == 1{
|
||||
guard let englishData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 1}).first, let url = englishData.contentHDURL else{return}
|
||||
playerItem.url = url
|
||||
|
||||
}else if categoryID == 18{
|
||||
guard let hindiData = watchData.contentMoreDetails?.filter({$0.languageMasterID == 2}).first, let url = hindiData.contentHDURL else{return}
|
||||
playerItem.url = url
|
||||
}
|
||||
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: [playerItem], startIndex: 0, contentType: .continueWatching)
|
||||
|
||||
}
|
||||
|
||||
@IBAction func closeBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
self.dismiss(animated: true) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,11 +69,19 @@ class EpisodeDetailsVC: UIViewController {
|
||||
if AuthFunc.shareInstance.getDefaultLanguage() == .english{
|
||||
guard let englishData = teaserData.contentMoreDetails?.filter({$0.languageMasterID == 1}).first else{return}
|
||||
episodeTitle.text = englishData.title
|
||||
episodeDesc.text = englishData.description
|
||||
if let desc = englishData.description?.replacingOccurrences(of: "<br>", with: "").htmlToAttributedString{
|
||||
let sizeText = NSMutableAttributedString(attributedString: desc)
|
||||
sizeText.setFontFace(font: FontCustom.shareInstance.customFont(fontName: .Exo2_Regular, size: 15),color: UIColor.appColor(.TextDarkBlue)!)
|
||||
self.episodeDesc.attributedText = sizeText
|
||||
}
|
||||
}else{
|
||||
guard let hindiData = teaserData.contentMoreDetails?.filter({$0.languageMasterID == 2}).first else{return}
|
||||
episodeTitle.text = hindiData.title
|
||||
episodeDesc.text = hindiData.description
|
||||
if let desc = hindiData.description?.replacingOccurrences(of: "<br>", with: "").htmlToAttributedString{
|
||||
let sizeText = NSMutableAttributedString(attributedString: desc)
|
||||
sizeText.setFontFace(font: FontCustom.shareInstance.customFont(fontName: .Exo2_Regular, size: 15),color: UIColor.appColor(.TextDarkBlue)!)
|
||||
self.episodeDesc.attributedText = sizeText
|
||||
}
|
||||
}
|
||||
|
||||
mediaType.text = "Teaser".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue) + " " + (teaserData.serialNumber?.toString() ?? "0")
|
||||
|
||||
@@ -36,9 +36,11 @@ class WebSeriesSeasonVC: UIViewController {
|
||||
@IBOutlet weak var likeLabel: UILabel!
|
||||
@IBOutlet weak var totalLikes: UILabel!
|
||||
|
||||
@IBOutlet weak var addStack: UIStackView!
|
||||
@IBOutlet weak var shareStack: UIStackView!
|
||||
@IBOutlet weak var likeStack: UIStackView!
|
||||
@IBOutlet weak var addView: UIView!
|
||||
@IBOutlet weak var shareView: UIView!
|
||||
@IBOutlet weak var likeView: UIView!
|
||||
|
||||
var likeFavDelegate : ReloadSeriesFavLike?
|
||||
|
||||
override func viewDidLoad() {
|
||||
super.viewDidLoad()
|
||||
@@ -70,6 +72,20 @@ class WebSeriesSeasonVC: UIViewController {
|
||||
@IBAction func watchBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
}
|
||||
|
||||
@IBAction func playTrailerBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
// 1-> english , 18- hindi
|
||||
let seasonData = vm.seasonListingData.filter({$0.id == vm.episodeSelectedCateogory}).first
|
||||
if vm.categoryID == 1{
|
||||
guard let englishData = seasonData?.seasonMoreDetails?.filter({$0.languageMasterID == 1}).first , let url = englishData.trailerHDURL , let title = englishData.title else{return}
|
||||
let playerItem = JwPlayerItemCreate(url: url, poster: seasonData?.thumbnailPath, titles: title)
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: [playerItem], startIndex: 0, contentType: .trailer)
|
||||
}else if vm.categoryID == 18{
|
||||
guard let hindiData = seasonData?.seasonMoreDetails?.filter({$0.languageMasterID == 2}).first , let url = hindiData.trailerHDURL , let title = hindiData.title else{return}
|
||||
let playerItem = JwPlayerItemCreate(url: url, poster: seasonData?.thumbnailPath, titles: title)
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: [playerItem], startIndex: 0, contentType: .trailer)
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func retryBtnTapped(_ sender: LocalisedElementsButton) {
|
||||
}
|
||||
|
||||
@@ -108,25 +124,44 @@ extension WebSeriesSeasonVC : TableViewSRC{
|
||||
}
|
||||
|
||||
cell.btnTapped = { [self] () -> Void in
|
||||
var urls = [String]()
|
||||
var title = [String]()
|
||||
var poster = [String]()
|
||||
if let episodeData = vm.seasonEpisodeData.first?.episodeData{
|
||||
for i in episodeData{
|
||||
urls.append(i.episodeURL ?? "")
|
||||
title.append(i.episodeTitle ?? "Episode")
|
||||
poster.append(i.thumbnailPath ?? "")
|
||||
|
||||
var playerItems = [JwPlayerItemCreate]()
|
||||
|
||||
if let episodeData = vm.seasonEpisodeData.first?.episodeData {
|
||||
if vm.categoryID == 1{
|
||||
playerItems = episodeData.flatMap { episode in
|
||||
episode.contentMoreDetails?
|
||||
.filter { $0.languageMasterID == 1 }
|
||||
.prefix(1)
|
||||
.compactMap { data in
|
||||
if let url = data.contentHDURL, let title = data.title {
|
||||
return JwPlayerItemCreate(url: url, poster: episode.thumbnailPath, titles: title)
|
||||
}
|
||||
return nil
|
||||
} ?? []
|
||||
}
|
||||
}else if vm.categoryID == 18{
|
||||
playerItems = episodeData.flatMap { episode in
|
||||
episode.contentMoreDetails?
|
||||
.filter { $0.languageMasterID == 2 }
|
||||
.prefix(1)
|
||||
.compactMap { data in
|
||||
if let url = data.contentHDURL, let title = data.title {
|
||||
return JwPlayerItemCreate(url: url, poster: episode.thumbnailPath, titles: title)
|
||||
}
|
||||
return nil
|
||||
} ?? []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if let data = vm.seasonEpisodeData.first?.episodeData?[indexPath.row] , let url = data.episodeURL{
|
||||
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: playerItems, startIndex: indexPath.row, contentType: .webSeries)
|
||||
|
||||
// Ensure indexPath.row is valid before proceeding
|
||||
if indexPath.row < urls.count {
|
||||
JWPlayerManager.shared.presentPlayer(from: self, withURLs: urls, poster: poster, titles: title, startIndex: indexPath.row)
|
||||
} else {
|
||||
print("Index out of bounds for episode data")
|
||||
}// }
|
||||
|
||||
// if indexPath.row < playerItems.count {
|
||||
// } else {
|
||||
// print("Index out of bounds for episode data")
|
||||
// }
|
||||
}
|
||||
|
||||
return cell
|
||||
@@ -146,20 +181,14 @@ extension WebSeriesSeasonVC : TableViewSRC{
|
||||
}
|
||||
vcPush.onDoneBlock = { [weak self] in
|
||||
guard let self else{return}
|
||||
var urls = [String]()
|
||||
var title = [String]()
|
||||
var poster = [String]()
|
||||
if let episodeData = vm.seasonEpisodeData.first?.episodeData{
|
||||
for i in episodeData{
|
||||
urls.append(i.episodeURL ?? "")
|
||||
title.append(i.episodeTitle ?? "Episode")
|
||||
poster.append(i.thumbnailPath ?? "")
|
||||
var playerItems = [JwPlayerItemCreate]()
|
||||
if let episodeData = vm.seasonEpisodeData.first?.episodeData {
|
||||
// Use compactMap to create an array of JwPlayerItemCreate instances
|
||||
playerItems = episodeData.compactMap { episode in
|
||||
JwPlayerItemCreate(url: episode.episodeURL ?? "", poster: episode.thumbnailPath, titles: episode.episodeTitle)
|
||||
}
|
||||
}
|
||||
|
||||
// if let data = vm.seasonEpisodeData.first?.episodeData?[indexPath.row] , let url = data.episodeURL{
|
||||
JWPlayerManager.shared.presentPlayer(from: self, withURLs: urls, poster: poster, titles: title,startIndex: indexPath.row)
|
||||
// }
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: playerItems,startIndex: indexPath.row, contentType: .webSeries)
|
||||
}
|
||||
|
||||
vcPush.modalPresentationStyle = .overCurrentContext
|
||||
|
||||
@@ -7,6 +7,10 @@
|
||||
|
||||
import UIKit
|
||||
|
||||
protocol ReloadSeriesFavLike{
|
||||
func updateRows(index : Int, type : FavCellCLick)
|
||||
}
|
||||
|
||||
class WebSeriesVC: UIViewController {
|
||||
|
||||
@IBOutlet weak var headerView: ShimmerEffectView!
|
||||
@@ -59,8 +63,9 @@ class WebSeriesVC: UIViewController {
|
||||
}
|
||||
|
||||
// MARK: - Tap Handler
|
||||
|
||||
@IBAction func playTrailer(_ sender: LocalisedElementsButton) {
|
||||
let item = JwPlayerItemCreate(url: vm.masilaUrl, poster: nil, titles: "Masila")
|
||||
JWPlayerManager.shared.presentPlayer(from: self, playerItems: [item], contentType: .trailer)
|
||||
}
|
||||
|
||||
@IBAction func expandLanguageTapped(_ sender: UIButton) {
|
||||
@@ -199,6 +204,8 @@ extension WebSeriesVC : TableViewSRC{
|
||||
let sb = UIStoryboard(name: K.StoryBoard.webSeries, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.webSeriesSeasonVC) as! WebSeriesSeasonVC
|
||||
vcPush.vm.showData = showData
|
||||
vcPush.vm.indexSelected = indexPath.row
|
||||
vcPush.likeFavDelegate = self
|
||||
if let selectedIndex = vm.dropDownModule.indexForSelectedRow{
|
||||
let categoryID = vm.categoryListingData[selectedIndex]
|
||||
vcPush.vm.categoryID = categoryID.id
|
||||
@@ -207,6 +214,14 @@ extension WebSeriesVC : TableViewSRC{
|
||||
}
|
||||
}
|
||||
|
||||
extension WebSeriesVC : ReloadSeriesFavLike{
|
||||
func updateRows(index: Int, type: FavCellCLick) {
|
||||
print(index , type)
|
||||
updateFavLikes(type: type, index: index)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - CollectionView Delegate and Data Source
|
||||
|
||||
extension WebSeriesVC : CollectionViewSRC{
|
||||
@@ -223,7 +238,19 @@ extension WebSeriesVC : CollectionViewSRC{
|
||||
}
|
||||
|
||||
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
|
||||
print(indexPath.row)
|
||||
let data = vm.continueWatchingData[indexPath.row]
|
||||
|
||||
let sb = UIStoryboard(name: K.StoryBoard.webSeries, bundle: nil)
|
||||
let vcPush = sb.instantiateViewController(withIdentifier: K.StoryBoardID.WebSeries.continueWatchingVC) as! ContinueWatchingVC
|
||||
vcPush.modalPresentationStyle = .overCurrentContext
|
||||
vcPush.modalTransitionStyle = .crossDissolve
|
||||
vcPush.watchData = data
|
||||
if let selectedIndex = vm.dropDownModule.indexForSelectedRow{
|
||||
let categoryID = vm.categoryListingData[selectedIndex]
|
||||
vcPush.categoryID = categoryID.id
|
||||
}
|
||||
self.present(vcPush, animated: true)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,22 +8,28 @@
|
||||
import UIKit
|
||||
import JWPlayerKit
|
||||
|
||||
enum VideoContentType{
|
||||
case liveStream
|
||||
case webSeries
|
||||
case trailer
|
||||
case continueWatching
|
||||
}
|
||||
|
||||
struct JwPlayerItemCreate{
|
||||
var url : String
|
||||
var poster : String?
|
||||
var titles : String?
|
||||
}
|
||||
|
||||
class JWPlayerManager {
|
||||
static let shared = JWPlayerManager()
|
||||
|
||||
private init() {}
|
||||
|
||||
func presentPlayer(from viewController: UIViewController, withURLs liveStreamURLs: [String], poster : [String], titles: [String]? = nil, startIndex: Int = 0, completion: (() -> Void)? = nil) {
|
||||
DispatchQueue.main.async {
|
||||
Utilities.startProgressHUD(msg: "Loading...")
|
||||
}
|
||||
func presentPlayer(from viewController: UIViewController,playerItems : [JwPlayerItemCreate], startIndex: Int = 0, contentType : VideoContentType , completion: (() -> Void)? = nil) {
|
||||
|
||||
let sb = UIStoryboard(name: K.StoryBoard.theme, bundle: nil)
|
||||
guard let playerVC = sb.instantiateViewController(identifier: "PlayerVC") as? PlayerVC else {
|
||||
print("PlayerVC not found")
|
||||
Utilities.dismissProgressHUD()
|
||||
return
|
||||
}
|
||||
let playerVC = sb.instantiateViewController(identifier: K.StoryBoardID.Theme.playerVC) as! PlayerVC
|
||||
|
||||
DispatchQueue.main.async {
|
||||
do {
|
||||
@@ -31,32 +37,62 @@ class JWPlayerManager {
|
||||
var items: [JWPlayerItem] = []
|
||||
|
||||
// Ensure the liveStreamURLs and titles arrays have the same count, if titles are provided
|
||||
if let titles = titles, titles.count != liveStreamURLs.count {
|
||||
print("Titles count does not match URLs count")
|
||||
Utilities.dismissProgressHUD()
|
||||
return
|
||||
}
|
||||
// if let titles = titles, titles.count != liveStreamURLs.count {
|
||||
// print("Titles count does not match URLs count")
|
||||
// Utilities.dismissProgressHUD()
|
||||
// return
|
||||
// }
|
||||
|
||||
// Iterate over the liveStreamURLs to create JWPlayerItems
|
||||
for (index, urlString) in liveStreamURLs.enumerated() {
|
||||
guard let url = URL(string: urlString) else {
|
||||
print("Invalid live stream URL at index \(index)")
|
||||
continue
|
||||
switch contentType{
|
||||
case .webSeries:
|
||||
// Iterate over the liveStreamURLs to create JWPlayerItems
|
||||
for (index, singleItem) in playerItems.enumerated() {
|
||||
guard let url = URL(string: singleItem.url) else {
|
||||
print("Invalid live stream URL at index \(index)")
|
||||
continue
|
||||
}
|
||||
|
||||
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(url)
|
||||
.title(singleItem.titles ?? "")
|
||||
.posterImage(URL(string: singleItem.poster ?? "")!)
|
||||
.build()
|
||||
|
||||
items.append(item)
|
||||
}
|
||||
case .liveStream:
|
||||
guard let liveStreamItem = playerItems.first else {
|
||||
print("Invalid live stream URL")
|
||||
return
|
||||
}
|
||||
|
||||
// Use the corresponding title if provided, otherwise use a default title
|
||||
let itemTitle = titles?[index] ?? "Default Title \(index + 1)"
|
||||
let itemPoster = poster[index]
|
||||
|
||||
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(url)
|
||||
.title(itemTitle)
|
||||
.posterImage(URL(string: itemPoster)!)
|
||||
.file(URL(string: liveStreamItem.url)!)
|
||||
.title(liveStreamItem.titles ?? "Trailer")
|
||||
.build()
|
||||
items.append(item)
|
||||
case .trailer:
|
||||
guard let liveStreamItem = playerItems.first else {
|
||||
print("Invalid live stream URL")
|
||||
return
|
||||
}
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(URL(string: liveStreamItem.url)!)
|
||||
.title(liveStreamItem.titles ?? "Trailer")
|
||||
.build()
|
||||
items.append(item)
|
||||
case .continueWatching:
|
||||
guard let liveStreamItem = playerItems.first else {
|
||||
print("Invalid live stream URL")
|
||||
return
|
||||
}
|
||||
let item = try JWPlayerItemBuilder()
|
||||
.file(URL(string: liveStreamItem.url)!)
|
||||
.title(liveStreamItem.titles ?? "Trailer")
|
||||
.build()
|
||||
|
||||
items.append(item)
|
||||
}
|
||||
|
||||
|
||||
// Ensure there is at least one valid item
|
||||
guard !items.isEmpty else {
|
||||
@@ -72,10 +108,12 @@ class JWPlayerManager {
|
||||
.build()
|
||||
|
||||
playerVC.videoIndex = startIndex
|
||||
playerVC.contentType = contentType
|
||||
playerVC.config = config
|
||||
playerVC.modalPresentationStyle = .overFullScreen
|
||||
|
||||
// Present the PlayerVC
|
||||
Utilities.dismissProgressHUD()
|
||||
viewController.present(playerVC, animated: false) {
|
||||
completion?()
|
||||
playerVC.transitionToFullScreen(animated: true) {
|
||||
@@ -88,7 +126,6 @@ class JWPlayerManager {
|
||||
}
|
||||
|
||||
// Dismiss the progress HUD after the view controller presentation
|
||||
Utilities.dismissProgressHUD()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,12 +24,32 @@ class WebSeriesSeasonVM{
|
||||
|
||||
var showData : WebSeriesShowListDM.ShowDatum?
|
||||
|
||||
var indexSelected : Int?
|
||||
|
||||
func initView(){
|
||||
getSeasonListing()
|
||||
setupCell()
|
||||
setShowData()
|
||||
|
||||
vc.shareStack.addTapGesture {
|
||||
vc.addView.addTapGesture { [weak self] in
|
||||
guard let self else{return}
|
||||
// if let showData, let fav = showData.markAsFavourite{
|
||||
// if fav{
|
||||
// self.showData?.markAsFavourite = false
|
||||
//// self.showData?.likesCount! -= 1
|
||||
// }else{
|
||||
// self.showData?.markAsFavourite = true
|
||||
//// self.showData?.likesCount! += 1
|
||||
// }
|
||||
// }
|
||||
// setShowData()
|
||||
vc.likeFavDelegate?.updateRows(index: indexSelected!, type: .favourite)
|
||||
}
|
||||
vc.likeView.addTapGesture { [weak self] in
|
||||
guard let self else{return}
|
||||
vc.likeFavDelegate?.updateRows(index: indexSelected!, type: .liked)
|
||||
}
|
||||
vc.shareView.addTapGesture {
|
||||
print("share")
|
||||
}
|
||||
}
|
||||
@@ -41,10 +61,10 @@ class WebSeriesSeasonVM{
|
||||
switch like{
|
||||
case true:
|
||||
vc.likeIcon.image = UIImage(systemName: "hand.thumbsup.fill")
|
||||
vc.likeLabel.text = "Liked"
|
||||
vc.likeLabel.text = "LIKED".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
case false:
|
||||
vc.likeIcon.image = UIImage(systemName: "hand.thumbsup")
|
||||
vc.likeLabel.text = "Like"
|
||||
vc.likeLabel.text = "LIKE".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,20 +73,20 @@ class WebSeriesSeasonVM{
|
||||
let components = categoryIds.components(separatedBy: ",")
|
||||
if favourite == true && (components.first == categoryID?.toString() || components.last == categoryID?.toString()){
|
||||
vc.addIcon.image = UIImage(systemName: "heart.fill")
|
||||
vc.addLabel.text = "Added"
|
||||
vc.addLabel.text = "ADDED".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
}else{
|
||||
vc.addIcon.image = UIImage(systemName: "heart")
|
||||
vc.addLabel.text = "Add"
|
||||
vc.addLabel.text = "ADD".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if favourite == true && showData.favouriteCategoryIDS?.intValue == categoryID{
|
||||
vc.addIcon.image = UIImage(systemName: "heart.fill")
|
||||
vc.addLabel.text = "Added"
|
||||
vc.addLabel.text = "ADDED".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
}else{
|
||||
vc.addIcon.image = UIImage(systemName: "heart")
|
||||
vc.addLabel.text = "Add"
|
||||
vc.addLabel.text = "ADD".localized(loc: AuthFunc.shareInstance.languageSelected.rawValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,9 @@ class WebSeriesVM{
|
||||
let dropDownModule = DropDown()
|
||||
var dataSource = [String]()
|
||||
|
||||
//Static url for masila
|
||||
var masilaUrl = "https://content.jwplatform.com/videos/Iygt11AD-Ysj2G4DQ.mp4"
|
||||
|
||||
func initView(){
|
||||
setupCell()
|
||||
self.vc.tableHeight.constant = self.vc.showListingTableView.contentSize.height + 100
|
||||
@@ -136,7 +139,7 @@ class WebSeriesVM{
|
||||
}else{
|
||||
self.vc.continueWatchingStack.isHidden = false
|
||||
}
|
||||
self.continueWatchingData = data
|
||||
self.continueWatchingData = data.reversed()
|
||||
self.vc.continueWatchingCV.reloadData()
|
||||
default:
|
||||
break
|
||||
|
||||
@@ -35,42 +35,14 @@
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="MasilaComingSoon" translatesAutoresizingMaskIntoConstraints="NO" id="wnB-dE-0v3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="200"/>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="orj-ne-be7" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="136.66666666666666" y="77.666666666666657" width="119.99999999999997" height="45"/>
|
||||
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="120" id="sN9-Fh-ZMR"/>
|
||||
<constraint firstAttribute="height" constant="45" id="zYM-Uz-Qxe">
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<real key="value" value="22.5"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</constraint>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="14"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="PLAY TRAILER"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="playTrailer:" destination="Y6W-OH-hqX" eventType="touchUpInside" id="nTB-Is-3cV"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="orj-ne-be7" firstAttribute="centerY" secondItem="bTO-Ql-tyN" secondAttribute="centerY" id="A2N-UU-G5r"/>
|
||||
<constraint firstAttribute="bottom" secondItem="wnB-dE-0v3" secondAttribute="bottom" id="BG4-7Q-bIb"/>
|
||||
<constraint firstAttribute="trailing" secondItem="wnB-dE-0v3" secondAttribute="trailing" id="JQb-FA-v0E"/>
|
||||
<constraint firstItem="wnB-dE-0v3" firstAttribute="top" secondItem="bTO-Ql-tyN" secondAttribute="top" id="LAu-Iu-1sV"/>
|
||||
<constraint firstAttribute="height" constant="200" id="X2g-lr-CX0"/>
|
||||
<constraint firstItem="wnB-dE-0v3" firstAttribute="leading" secondItem="bTO-Ql-tyN" secondAttribute="leading" id="sQQ-a5-rhV"/>
|
||||
<constraint firstItem="orj-ne-be7" firstAttribute="centerX" secondItem="bTO-Ql-tyN" secondAttribute="centerX" id="x74-Vl-ZwA"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="isSkeletonable" value="YES"/>
|
||||
@@ -80,10 +52,10 @@
|
||||
<rect key="frame" x="0.0" y="259" width="393" height="593"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Cog-DZ-ib0" customClass="ShimmerEffectView" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="103"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="108"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="tRo-aT-Zuf">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="103"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="108"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="MASILA" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RDe-bw-Rsd">
|
||||
<rect key="frame" x="145.66666666666666" y="0.0" width="102" height="50"/>
|
||||
@@ -95,10 +67,10 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Vyo-SD-Uke" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="136.66666666666666" y="58" width="119.99999999999997" height="45"/>
|
||||
<rect key="frame" x="136.66666666666666" y="58" width="119.99999999999997" height="50"/>
|
||||
<color key="backgroundColor" red="0.36862745099999999" green="0.1215686275" blue="0.76862745099999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="45" id="Xr1-4J-QSr"/>
|
||||
<constraint firstAttribute="height" constant="50" id="Xr1-4J-QSr"/>
|
||||
<constraint firstAttribute="width" constant="120" id="wO4-9d-U0h"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="14"/>
|
||||
@@ -107,9 +79,12 @@
|
||||
<state key="normal" title="TRAILER"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
<integer key="value" value="25"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="playTrailer:" destination="Y6W-OH-hqX" eventType="touchUpInside" id="mYK-8n-Mg1"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
@@ -123,7 +98,7 @@
|
||||
</constraints>
|
||||
</view>
|
||||
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rom-H6-7RC">
|
||||
<rect key="frame" x="0.0" y="111" width="393" height="482"/>
|
||||
<rect key="frame" x="0.0" y="116" width="393" height="477"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="15" translatesAutoresizingMaskIntoConstraints="NO" id="c6v-VU-iKP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="105"/>
|
||||
@@ -293,7 +268,7 @@
|
||||
<rect key="frame" x="0.0" y="59" width="393" height="793"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="JVZ-ee-mig">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="681.33333333333337"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="638"/>
|
||||
<subviews>
|
||||
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8zm-IG-hTk">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="553"/>
|
||||
@@ -301,11 +276,6 @@
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WebSeriesSeasonsBackground" translatesAutoresizingMaskIntoConstraints="NO" id="GF4-9m-aNo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="553"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="5"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="ZDd-3v-Wdp">
|
||||
<rect key="frame" x="10" y="10" width="373" height="503"/>
|
||||
@@ -321,12 +291,40 @@
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="vxz-5K-k00" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="126.66666666666666" y="83" width="120" height="40"/>
|
||||
<color key="backgroundColor" red="0.035294117649999998" green="0.0" blue="0.36470588240000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="120" id="fc9-2B-CtU"/>
|
||||
<constraint firstAttribute="height" constant="40" id="g04-7R-e5G">
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</constraint>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="14"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="PLAY TRAILER"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="20"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="playTrailerBtnTapped:" destination="sPj-Um-9Xm" eventType="touchUpInside" id="ju7-P7-Vs0"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="ygJ-Op-sJP" secondAttribute="trailing" constant="8" id="5jT-M0-FSX"/>
|
||||
<constraint firstItem="ygJ-Op-sJP" firstAttribute="top" secondItem="Am7-iA-6bG" secondAttribute="top" constant="8" id="FMB-f9-hlG"/>
|
||||
<constraint firstItem="vxz-5K-k00" firstAttribute="centerX" secondItem="Am7-iA-6bG" secondAttribute="centerX" id="X7q-jb-ExV"/>
|
||||
<constraint firstAttribute="bottom" secondItem="ygJ-Op-sJP" secondAttribute="bottom" constant="8" id="b4t-4K-wrZ"/>
|
||||
<constraint firstItem="vxz-5K-k00" firstAttribute="centerY" secondItem="Am7-iA-6bG" secondAttribute="centerY" id="fZd-eA-qa7"/>
|
||||
<constraint firstItem="ygJ-Op-sJP" firstAttribute="leading" secondItem="Am7-iA-6bG" secondAttribute="leading" constant="8" id="wSF-bR-JNe"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
@@ -404,15 +402,15 @@
|
||||
<rect key="frame" x="0.0" y="453" width="373" height="50"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PzY-0K-yPM" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="50"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="135" height="50"/>
|
||||
<color key="backgroundColor" red="0.36862745099999999" green="0.1215686275" blue="0.76862745099999996" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="UqM-B3-bVp"/>
|
||||
<constraint firstAttribute="width" constant="135" id="UqM-B3-bVp"/>
|
||||
<constraint firstAttribute="height" constant="50" id="ldT-CD-cmn"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<inset key="titleEdgeInsets" minX="15" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
<inset key="titleEdgeInsets" minX="10" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" title="WATCH" image="PlayButtonSmall">
|
||||
<preferredSymbolConfiguration key="preferredSymbolConfiguration" scale="small"/>
|
||||
</state>
|
||||
@@ -422,80 +420,131 @@
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="playTrailerBtnTapped:" destination="sPj-Um-9Xm" eventType="touchUpInside" id="f7Z-6c-eXL"/>
|
||||
<action selector="watchBtnTapped:" destination="sPj-Um-9Xm" eventType="touchUpInside" id="I1O-Rx-JeC"/>
|
||||
</connections>
|
||||
</button>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="6gf-lV-70S">
|
||||
<rect key="frame" x="247.66666666666671" y="0.0" width="125.33333333333334" height="50"/>
|
||||
<rect key="frame" x="219.33333333333337" y="0.0" width="153.66666666666663" height="50"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="iyr-1k-HHN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="30" height="50"/>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="SoI-DX-Bve">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" image="heart" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="QkS-fP-ADo">
|
||||
<rect key="frame" x="0.0" y="1.9999999999999964" width="30" height="32.333333333333329"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="4SG-I2-B6S"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ADD" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tlx-NG-HWl">
|
||||
<rect key="frame" x="3.3333333333333144" y="35.333333333333371" width="23.666666666666668" height="14.666666666666664"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="iyr-1k-HHN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" image="heart" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="QkS-fP-ADo">
|
||||
<rect key="frame" x="5" y="2" width="30" height="33"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="MvO-j1-tEk"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ADDED" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tlx-NG-HWl" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="1" y="36" width="38.333333333333336" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="LAN-B9-IDU"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</stackView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9xJ-TL-8CA">
|
||||
<rect key="frame" x="38" y="0.0" width="1" height="50"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="iyr-1k-HHN" firstAttribute="top" secondItem="SoI-DX-Bve" secondAttribute="top" id="SJh-uj-KAd"/>
|
||||
<constraint firstItem="iyr-1k-HHN" firstAttribute="leading" secondItem="SoI-DX-Bve" secondAttribute="leading" id="eyS-wf-utZ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="iyr-1k-HHN" secondAttribute="bottom" id="pe5-pH-03D"/>
|
||||
<constraint firstAttribute="width" constant="40" id="sd9-WS-oYY"/>
|
||||
<constraint firstAttribute="trailing" secondItem="iyr-1k-HHN" secondAttribute="trailing" id="sg5-1o-Qa4"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9xJ-TL-8CA" userLabel="AddView">
|
||||
<rect key="frame" x="47.999999999999972" y="0.0" width="1" height="50"/>
|
||||
<color key="backgroundColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="0.80000000000000004" id="y2u-9V-Gis"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Lag-16-uzP">
|
||||
<rect key="frame" x="47" y="0.0" width="36.666666666666657" height="50"/>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u6J-48-CIL">
|
||||
<rect key="frame" x="56.999999999999972" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="center" horizontalHuggingPriority="251" image="ShareImage" translatesAutoresizingMaskIntoConstraints="NO" id="Azy-gL-vtW">
|
||||
<rect key="frame" x="3.3333333333333144" y="0.0" width="30" height="35.333333333333336"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="Lag-16-uzP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" image="ShareImage" translatesAutoresizingMaskIntoConstraints="NO" id="Azy-gL-vtW">
|
||||
<rect key="frame" x="10" y="0.0" width="20" height="36"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="20" id="clk-de-Plw"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SHARE" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a4Q-xN-IE4" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="1.6666666666666856" y="36" width="36.666666666666664" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="rTT-BS-v4Y"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="30" id="DYv-5U-6mY"/>
|
||||
<constraint firstAttribute="width" constant="40" id="RZk-Y1-zM3"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SHARE" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a4Q-xN-IE4">
|
||||
<rect key="frame" x="0.0" y="35.333333333333371" width="36.666666666666664" height="14.666666666666664"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</stackView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Lag-16-uzP" firstAttribute="leading" secondItem="u6J-48-CIL" secondAttribute="leading" id="DES-rC-Hu2"/>
|
||||
<constraint firstItem="Lag-16-uzP" firstAttribute="top" secondItem="u6J-48-CIL" secondAttribute="top" id="ZDU-xF-iEX"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Lag-16-uzP" secondAttribute="bottom" id="vh5-A1-YRo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Lag-16-uzP" secondAttribute="trailing" id="yso-0a-hHN"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gs2-gk-Fn0">
|
||||
<rect key="frame" x="91.666666666666629" y="0.0" width="0.6666666666666714" height="50"/>
|
||||
<rect key="frame" x="104.99999999999997" y="0.0" width="0.6666666666666714" height="50"/>
|
||||
<color key="backgroundColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="0.80000000000000004" id="2M1-wj-hEy"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="8UJ-rG-fB2">
|
||||
<rect key="frame" x="100.33333333333331" y="0.0" width="25" height="50"/>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GRu-Ep-rmR">
|
||||
<rect key="frame" x="113.66666666666666" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" image="hand.thumbsup" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="f9M-ON-9gL">
|
||||
<rect key="frame" x="0.0" y="-0.33333333333333215" width="25" height="35.333333333333329"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="25" id="UAK-v9-EKA"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LIKE" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q4V-Gl-g6v">
|
||||
<rect key="frame" x="1" y="35.333333333333371" width="23.333333333333332" height="14.666666666666664"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="8UJ-rG-fB2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40" height="50"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" image="hand.thumbsup" catalog="system" translatesAutoresizingMaskIntoConstraints="NO" id="f9M-ON-9gL">
|
||||
<rect key="frame" x="7.6666666666666856" y="-0.33333333333333215" width="25" height="36"/>
|
||||
<color key="tintColor" name="TextDarkBlue"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="25" id="UAK-v9-EKA"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LIKE" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q4V-Gl-g6v" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="8.3333333333333126" y="36" width="23.333333333333329" height="14"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="14" id="169-aC-7et"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Regular" family="Exo 2" pointSize="12"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</stackView>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="8UJ-rG-fB2" firstAttribute="leading" secondItem="GRu-Ep-rmR" secondAttribute="leading" id="Mhv-LT-2uu"/>
|
||||
<constraint firstAttribute="trailing" secondItem="8UJ-rG-fB2" secondAttribute="trailing" id="OPq-vL-uxf"/>
|
||||
<constraint firstItem="8UJ-rG-fB2" firstAttribute="top" secondItem="GRu-Ep-rmR" secondAttribute="top" id="VTr-j1-KdO"/>
|
||||
<constraint firstAttribute="width" constant="40" id="d8w-cX-rrb"/>
|
||||
<constraint firstAttribute="bottom" secondItem="8UJ-rG-fB2" secondAttribute="bottom" id="eeq-nm-2VG"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
</stackView>
|
||||
</subviews>
|
||||
@@ -546,13 +595,13 @@
|
||||
<edgeInsets key="layoutMargins" top="0.0" left="5" bottom="0.0" right="5"/>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="Idg-Al-Eib" userLabel="EpisodeStack">
|
||||
<rect key="frame" x="0.0" y="623" width="393" height="26.666666666666629"/>
|
||||
<rect key="frame" x="0.0" y="623" width="393" height="5"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="cd8-G8-MXm">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="21.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="0.0"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SONGS" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yzq-z1-mIE">
|
||||
<rect key="frame" x="10" y="0.0" width="373" height="21.666666666666668"/>
|
||||
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="SONGS" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yzq-z1-mIE">
|
||||
<rect key="frame" x="0.0" y="0.0" width="58.333333333333336" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -561,7 +610,7 @@
|
||||
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
|
||||
</stackView>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="244" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="RJP-uy-ll3">
|
||||
<rect key="frame" x="0.0" y="26.666666666666629" width="393" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="5" width="393" height="0.0"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" id="F3X-r1-O8N"/>
|
||||
@@ -570,13 +619,13 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="4WM-II-43s" userLabel="Teaser Stack">
|
||||
<rect key="frame" x="0.0" y="654.66666666666663" width="393" height="26.666666666666629"/>
|
||||
<rect key="frame" x="0.0" y="633" width="393" height="5"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="vrf-Fc-axK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="21.666666666666668"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="0.0"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TEASERS" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dfh-1T-Hnq" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="10" y="0.0" width="373" height="21.666666666666668"/>
|
||||
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TEASERS" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dfh-1T-Hnq" customClass="LocalisedElementsLabel" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="76.333333333333329" height="0.0"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
@@ -585,7 +634,7 @@
|
||||
<edgeInsets key="layoutMargins" top="0.0" left="10" bottom="0.0" right="10"/>
|
||||
</stackView>
|
||||
<tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" scrollEnabled="NO" showsHorizontalScrollIndicator="NO" showsVerticalScrollIndicator="NO" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="-1" estimatedRowHeight="244" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="hvm-6m-itF">
|
||||
<rect key="frame" x="0.0" y="26.666666666666742" width="393" height="0.0"/>
|
||||
<rect key="frame" x="0.0" y="5" width="393" height="0.0"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" id="KQj-Vb-7pU"/>
|
||||
@@ -621,20 +670,20 @@
|
||||
<connections>
|
||||
<outlet property="addIcon" destination="QkS-fP-ADo" id="H3a-fb-Mgw"/>
|
||||
<outlet property="addLabel" destination="tlx-NG-HWl" id="IHA-Oz-faM"/>
|
||||
<outlet property="addStack" destination="iyr-1k-HHN" id="PBF-2C-nPZ"/>
|
||||
<outlet property="addView" destination="SoI-DX-Bve" id="ICd-dl-my9"/>
|
||||
<outlet property="categoryCV" destination="rAO-uI-Djj" id="9vd-ge-YZ5"/>
|
||||
<outlet property="episodeTableView" destination="RJP-uy-ll3" id="EEa-5i-fyE"/>
|
||||
<outlet property="episodeTitle" destination="yzq-z1-mIE" id="cfL-Qn-sa3"/>
|
||||
<outlet property="likeIcon" destination="f9M-ON-9gL" id="Iyp-MI-UfT"/>
|
||||
<outlet property="likeLabel" destination="Q4V-Gl-g6v" id="p5K-OM-Lmn"/>
|
||||
<outlet property="likeStack" destination="8UJ-rG-fB2" id="Ktz-EP-lgH"/>
|
||||
<outlet property="likeView" destination="GRu-Ep-rmR" id="F5U-OH-z0d"/>
|
||||
<outlet property="seasonDate" destination="3AX-wl-iqI" id="4Zq-76-ZN2"/>
|
||||
<outlet property="seasonDesc" destination="DLr-9j-LSn" id="hpg-2G-M9N"/>
|
||||
<outlet property="seasonEpisodes" destination="G0i-Q1-Tic" id="t9J-Zm-eqb"/>
|
||||
<outlet property="seasonImage" destination="ygJ-Op-sJP" id="cXY-pG-3ce"/>
|
||||
<outlet property="seasonMediaType" destination="F1N-Se-lI3" id="8Wb-HP-3bZ"/>
|
||||
<outlet property="seasonTitle" destination="AdX-OP-Gcd" id="I39-xA-Z1d"/>
|
||||
<outlet property="shareStack" destination="Lag-16-uzP" id="jjy-Lv-6on"/>
|
||||
<outlet property="shareView" destination="u6J-48-CIL" id="0BT-tn-2wD"/>
|
||||
<outlet property="tableHeight" destination="F3X-r1-O8N" id="O70-hN-czC"/>
|
||||
<outlet property="teaserTableHeight" destination="KQj-Vb-7pU" id="VEU-Ws-iAi"/>
|
||||
<outlet property="teaserTableView" destination="hvm-6m-itF" id="4Sl-Om-Pu6"/>
|
||||
@@ -834,6 +883,181 @@
|
||||
</objects>
|
||||
<point key="canvasLocation" x="1610" y="4"/>
|
||||
</scene>
|
||||
<!--Continue WatchingVC-->
|
||||
<scene sceneID="QKb-eS-DPl">
|
||||
<objects>
|
||||
<viewController storyboardIdentifier="ContinueWatchingVC" id="F49-Rd-hhU" customClass="ContinueWatchingVC" customModule="WOKA" customModuleProvider="target" sceneMemberID="viewController">
|
||||
<view key="view" contentMode="scaleToFill" id="XSr-gC-K01">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view alpha="0.60000002384185791" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WoT-kA-uJY">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cCC-Ly-sXY">
|
||||
<rect key="frame" x="0.0" y="147.66666666666669" width="393" height="581.66666666666652"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="WebSeriesSeasonsBackground" translatesAutoresizingMaskIntoConstraints="NO" id="0Df-F5-uq8">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="581.66666666666663"/>
|
||||
</imageView>
|
||||
<stackView opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" axis="vertical" translatesAutoresizingMaskIntoConstraints="NO" id="A9m-RO-LDo">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="566.66666666666663"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dID-xZ-qMx">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="50"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5t5-Gg-oPV">
|
||||
<rect key="frame" x="348" y="10" width="40" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" secondItem="5t5-Gg-oPV" secondAttribute="height" multiplier="1:1" id="ZfT-2o-OTP"/>
|
||||
</constraints>
|
||||
<color key="tintColor" red="0.1058823529" green="0.050980392159999999" blue="0.60392156860000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="CloseIconEmpty"/>
|
||||
<connections>
|
||||
<action selector="closeBtnTapped:" destination="F49-Rd-hhU" eventType="touchUpInside" id="39l-gF-kZw"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="LBy-g6-FsH"/>
|
||||
<constraint firstItem="5t5-Gg-oPV" firstAttribute="top" secondItem="dID-xZ-qMx" secondAttribute="top" constant="10" id="n73-bN-xc0"/>
|
||||
<constraint firstAttribute="bottom" secondItem="5t5-Gg-oPV" secondAttribute="bottom" id="sKp-Ys-R2A"/>
|
||||
<constraint firstAttribute="trailing" secondItem="5t5-Gg-oPV" secondAttribute="trailing" constant="5" id="vXm-ix-43a"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="10" translatesAutoresizingMaskIntoConstraints="NO" id="4wN-dj-Wtb" userLabel="MainStack">
|
||||
<rect key="frame" x="0.0" y="50" width="393" height="516.66666666666663"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Xm0-dV-EHz" customClass="ShadowView" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="13" y="5" width="367" height="200"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="lCX-qg-W0T">
|
||||
<rect key="frame" x="8" y="8" width="351" height="184"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="10"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="lCX-qg-W0T" secondAttribute="bottom" constant="8" id="7iU-8W-f0I"/>
|
||||
<constraint firstItem="lCX-qg-W0T" firstAttribute="top" secondItem="Xm0-dV-EHz" secondAttribute="top" constant="8" id="CBz-iA-PkR"/>
|
||||
<constraint firstAttribute="trailing" secondItem="lCX-qg-W0T" secondAttribute="trailing" constant="8" id="D4Z-hv-ird"/>
|
||||
<constraint firstItem="lCX-qg-W0T" firstAttribute="leading" secondItem="Xm0-dV-EHz" secondAttribute="leading" constant="8" id="eeP-Mk-DYW"/>
|
||||
<constraint firstAttribute="height" constant="200" id="tx6-5Y-fPi"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="10"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="0Xd-z8-qHM">
|
||||
<rect key="frame" x="13" y="215.00000000000003" width="367" height="21.666666666666657"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="dasdasdas" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Fo-Xt-kpO">
|
||||
<rect key="frame" x="0.0" y="0.0" width="367" height="21.666666666666668"/>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="textColor" name="TextDarkBlue"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="MUz-A4-7TT">
|
||||
<rect key="frame" x="13" y="246.66666666666663" width="367" height="180"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="180" id="T3B-wL-okY"/>
|
||||
</constraints>
|
||||
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
|
||||
<color key="textColor" systemColor="labelColor"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
|
||||
</textView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" alignment="top" translatesAutoresizingMaskIntoConstraints="NO" id="eAN-rJ-25F">
|
||||
<rect key="frame" x="13" y="436.66666666666674" width="367" height="50"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="tailTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Eyz-VT-32D" customClass="LocalisedElementsButton" customModule="WOKA" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="125" height="50"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.47843137254901957" blue="0.75294117647058822" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="125" id="h0n-M1-I4Q"/>
|
||||
<constraint firstAttribute="height" constant="50" id="kdA-Ps-IuX"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Exo2-Bold" family="Exo 2" pointSize="18"/>
|
||||
<color key="tintColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<inset key="titleEdgeInsets" minX="5" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
<inset key="imageEdgeInsets" minX="-10" minY="0.0" maxX="10" maxY="0.0"/>
|
||||
<state key="normal" title="WATCH" image="PlayButtonSmall">
|
||||
<preferredSymbolConfiguration key="preferredSymbolConfiguration" scale="small"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="25"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="watchBtnTapped:" destination="sPj-Um-9Xm" eventType="touchUpInside" id="Rxg-KV-4e0"/>
|
||||
<action selector="watchBtnTapped:" destination="F49-Rd-hhU" eventType="touchUpInside" id="stF-47-9jP"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="50" id="hIv-fn-gO3"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<edgeInsets key="layoutMargins" top="5" left="13" bottom="30" right="13"/>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
|
||||
<integer key="value" value="10"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="A9m-RO-LDo" firstAttribute="top" secondItem="cCC-Ly-sXY" secondAttribute="top" id="CGo-kZ-4Vv"/>
|
||||
<constraint firstAttribute="trailing" secondItem="A9m-RO-LDo" secondAttribute="trailing" id="DgC-Fn-ILo"/>
|
||||
<constraint firstItem="0Df-F5-uq8" firstAttribute="top" secondItem="cCC-Ly-sXY" secondAttribute="top" id="Emz-Ll-rlS"/>
|
||||
<constraint firstItem="0Df-F5-uq8" firstAttribute="leading" secondItem="cCC-Ly-sXY" secondAttribute="leading" id="FbO-PS-sIw"/>
|
||||
<constraint firstItem="A9m-RO-LDo" firstAttribute="leading" secondItem="cCC-Ly-sXY" secondAttribute="leading" id="Meu-W4-Ff1"/>
|
||||
<constraint firstAttribute="trailing" secondItem="0Df-F5-uq8" secondAttribute="trailing" id="P5a-Ct-cM6"/>
|
||||
<constraint firstAttribute="bottom" secondItem="A9m-RO-LDo" secondAttribute="bottom" constant="15" id="Zl8-Fe-tMW"/>
|
||||
<constraint firstAttribute="bottom" secondItem="0Df-F5-uq8" secondAttribute="bottom" id="sXN-vd-MjG"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="8XZ-dc-rEM"/>
|
||||
<constraints>
|
||||
<constraint firstItem="WoT-kA-uJY" firstAttribute="top" secondItem="XSr-gC-K01" secondAttribute="top" id="A1f-9G-aKQ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="WoT-kA-uJY" secondAttribute="bottom" id="Asb-9v-YtB"/>
|
||||
<constraint firstItem="cCC-Ly-sXY" firstAttribute="centerY" secondItem="8XZ-dc-rEM" secondAttribute="centerY" id="E0V-PQ-QO3"/>
|
||||
<constraint firstItem="WoT-kA-uJY" firstAttribute="leading" secondItem="8XZ-dc-rEM" secondAttribute="leading" id="Le4-64-bRk"/>
|
||||
<constraint firstItem="cCC-Ly-sXY" firstAttribute="leading" secondItem="8XZ-dc-rEM" secondAttribute="leading" id="Oi1-7c-HSm"/>
|
||||
<constraint firstItem="8XZ-dc-rEM" firstAttribute="trailing" secondItem="cCC-Ly-sXY" secondAttribute="trailing" id="T3K-5P-LHw"/>
|
||||
<constraint firstItem="WoT-kA-uJY" firstAttribute="trailing" secondItem="8XZ-dc-rEM" secondAttribute="trailing" id="b2M-nU-Vsp"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="watchingDesc" destination="MUz-A4-7TT" id="Lmh-1V-12C"/>
|
||||
<outlet property="watchingImage" destination="lCX-qg-W0T" id="u95-td-2nl"/>
|
||||
<outlet property="watchingTitle" destination="1Fo-Xt-kpO" id="j8W-DX-lYb"/>
|
||||
</connections>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="wwK-SV-q6o" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="2416" y="4"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="CloseIconEmpty" width="30" height="30"/>
|
||||
|
||||
Reference in New Issue
Block a user