From e7b1017d504fd5a797860ae64a80f58704394a0c Mon Sep 17 00:00:00 2001 From: zeng Date: Fri, 17 Oct 2025 10:12:55 +0800 Subject: [PATCH] 1 --- Fableon.xcodeproj/project.pbxproj | 24 ++++ Fableon/Base/Request/FAAPIPath.swift | 2 +- .../Home/C/FAGenresListViewController.swift | 74 +++++++++++++ .../Class/Home/C/FAGenresViewController.swift | 83 ++++++++++++++ .../Home/UI/FAHomeMustSeeContentView.swift | 8 ++ Fableon/Class/Home/UI/FAHomeMustSeeView.swift | 4 +- Fableon/Class/Home/V/FAGenresCell.swift | 53 +++++++++ Fableon/Class/Home/V/FAGenresCell.xib | 104 ++++++++++++++++++ Fableon/Class/Home/V/FAGenresListCell.swift | 17 +++ Fableon/Class/Home/V/FAGenresListCell.xib | 56 ++++++++++ Fableon/Class/Home/VM/FAHomeViewModel.swift | 6 + .../color/#5CA8FF_0.5.colorset/Contents.json | 20 ++++ .../color/#A783FF_0.5.colorset/Contents.json | 20 ++++ .../color/#CEE2F5.colorset/Contents.json | 20 ++++ .../color/#FCB072_0.5.colorset/Contents.json | 20 ++++ .../color/#FE8CCA_0.5.colorset/Contents.json | 20 ++++ .../color/#FF5977_0.5.colorset/Contents.json | 20 ++++ .../image/Frame 3013.imageset/Contents.json | 22 ++++ .../Frame 3013.imageset/Frame 3012@2x.png | Bin 0 -> 286 bytes .../Frame 3013.imageset/Frame 3012@3x.png | Bin 0 -> 374 bytes .../image/Frame 3014.imageset/Contents.json | 22 ++++ .../Frame 3014.imageset/Frame 3013@2x.png | Bin 0 -> 256 bytes .../Frame 3014.imageset/Frame 3013@3x.png | Bin 0 -> 316 bytes .../image/icon_火.imageset/Contents.json | 22 ++++ .../image/icon_火.imageset/icon_火@2x.png | Bin 0 -> 324 bytes .../image/icon_火.imageset/icon_火@3x.png | Bin 0 -> 442 bytes Fableon/Source/en.lproj/Localizable.strings | 1 + 27 files changed, 616 insertions(+), 2 deletions(-) create mode 100644 Fableon/Class/Home/C/FAGenresListViewController.swift create mode 100644 Fableon/Class/Home/C/FAGenresViewController.swift create mode 100644 Fableon/Class/Home/V/FAGenresCell.swift create mode 100644 Fableon/Class/Home/V/FAGenresCell.xib create mode 100644 Fableon/Class/Home/V/FAGenresListCell.swift create mode 100644 Fableon/Class/Home/V/FAGenresListCell.xib create mode 100644 Fableon/Source/Assets.xcassets/color/#5CA8FF_0.5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#A783FF_0.5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#CEE2F5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FCB072_0.5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FE8CCA_0.5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/color/#FF5977_0.5.colorset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3014.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3014.imageset/Frame 3013@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/Frame 3014.imageset/Frame 3013@3x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_火.imageset/Contents.json create mode 100644 Fableon/Source/Assets.xcassets/image/icon_火.imageset/icon_火@2x.png create mode 100644 Fableon/Source/Assets.xcassets/image/icon_火.imageset/icon_火@3x.png diff --git a/Fableon.xcodeproj/project.pbxproj b/Fableon.xcodeproj/project.pbxproj index 4178b1a..097e06a 100644 --- a/Fableon.xcodeproj/project.pbxproj +++ b/Fableon.xcodeproj/project.pbxproj @@ -10,6 +10,12 @@ B8B1DA3824F2148CEEF9F162 /* Pods_Fableon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C4958FEE55B4555A94F11F00 /* Pods_Fableon.framework */; }; F301F6472E974B6300E76A90 /* FARecommendPlayerControlView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F301F6462E974B6300E76A90 /* FARecommendPlayerControlView.swift */; }; F34296922EA0C60200A58F99 /* FAHomePlayHistoryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34296912EA0C60200A58F99 /* FAHomePlayHistoryView.swift */; }; + F34296942EA0E8CB00A58F99 /* FAGenresViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34296932EA0E8CB00A58F99 /* FAGenresViewController.swift */; }; + F34296972EA0EAAA00A58F99 /* FAGenresCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34296952EA0EAAA00A58F99 /* FAGenresCell.swift */; }; + F34296982EA0EAAA00A58F99 /* FAGenresCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F34296962EA0EAAA00A58F99 /* FAGenresCell.xib */; }; + F342969A2EA0F8E700A58F99 /* FAGenresListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F34296992EA0F8E700A58F99 /* FAGenresListViewController.swift */; }; + F342969F2EA0FA2200A58F99 /* FAGenresListCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F342969E2EA0FA2200A58F99 /* FAGenresListCell.xib */; }; + F34296A02EA0FA2200A58F99 /* FAGenresListCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F342969D2EA0FA2200A58F99 /* FAGenresListCell.swift */; }; F37103312E978F8C00E7F171 /* FACollectViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103302E978F8C00E7F171 /* FACollectViewController.swift */; }; F37103352E97929F00E7F171 /* FACollectCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F37103342E97929F00E7F171 /* FACollectCell.xib */; }; F37103362E97929F00E7F171 /* FACollectCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F37103332E97929F00E7F171 /* FACollectCell.swift */; }; @@ -129,6 +135,12 @@ DC14083E24B746ED3DE2FE0C /* Pods-Fableon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Fableon.release.xcconfig"; path = "Target Support Files/Pods-Fableon/Pods-Fableon.release.xcconfig"; sourceTree = ""; }; F301F6462E974B6300E76A90 /* FARecommendPlayerControlView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FARecommendPlayerControlView.swift; sourceTree = ""; }; F34296912EA0C60200A58F99 /* FAHomePlayHistoryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAHomePlayHistoryView.swift; sourceTree = ""; }; + F34296932EA0E8CB00A58F99 /* FAGenresViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAGenresViewController.swift; sourceTree = ""; }; + F34296952EA0EAAA00A58F99 /* FAGenresCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAGenresCell.swift; sourceTree = ""; }; + F34296962EA0EAAA00A58F99 /* FAGenresCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAGenresCell.xib; sourceTree = ""; }; + F34296992EA0F8E700A58F99 /* FAGenresListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAGenresListViewController.swift; sourceTree = ""; }; + F342969D2EA0FA2200A58F99 /* FAGenresListCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FAGenresListCell.swift; sourceTree = ""; }; + F342969E2EA0FA2200A58F99 /* FAGenresListCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FAGenresListCell.xib; sourceTree = ""; }; F37103302E978F8C00E7F171 /* FACollectViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACollectViewController.swift; sourceTree = ""; }; F37103332E97929F00E7F171 /* FACollectCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FACollectCell.swift; sourceTree = ""; }; F37103342E97929F00E7F171 /* FACollectCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FACollectCell.xib; sourceTree = ""; }; @@ -559,6 +571,10 @@ F37103642E9E3ABC00E7F171 /* FASearchResultCell.swift */, F37103652E9E3ABC00E7F171 /* FASearchResultCell.xib */, F34296912EA0C60200A58F99 /* FAHomePlayHistoryView.swift */, + F34296952EA0EAAA00A58F99 /* FAGenresCell.swift */, + F34296962EA0EAAA00A58F99 /* FAGenresCell.xib */, + F342969D2EA0FA2200A58F99 /* FAGenresListCell.swift */, + F342969E2EA0FA2200A58F99 /* FAGenresListCell.xib */, ); path = V; sourceTree = ""; @@ -568,6 +584,8 @@ children = ( F3A793032E77FB110097E0BC /* FAHomeViewController.swift */, F371034C2E9DF9FB00E7F171 /* FASearchViewController.swift */, + F34296932EA0E8CB00A58F99 /* FAGenresViewController.swift */, + F34296992EA0F8E700A58F99 /* FAGenresListViewController.swift */, ); path = C; sourceTree = ""; @@ -828,8 +846,10 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F34296982EA0EAAA00A58F99 /* FAGenresCell.xib in Resources */, F3A798B72E828C180097E0BC /* Localizable.strings in Resources */, F37103572E9E1FA500E7F171 /* FASearchRecordCell.xib in Resources */, + F342969F2EA0FA2200A58F99 /* FAGenresListCell.xib in Resources */, F39E663A2E77BAD0008AAAFA /* Assets.xcassets in Resources */, F37103772E9FA15B00E7F171 /* FAAboutCell.xib in Resources */, F371035E2E9E2E7400E7F171 /* FASearchRecommendCell.xib in Resources */, @@ -917,6 +937,7 @@ F3A7931C2E792D0D0097E0BC /* FAHomeMustSeeContentCell.swift in Sources */, F37103612E9E379E00E7F171 /* FASearchResultView.swift in Sources */, F3A792F52E77F8A80097E0BC /* FAHomeRecommendedItemView.swift in Sources */, + F34296972EA0EAAA00A58F99 /* FAGenresCell.swift in Sources */, F37103842EA0873B00E7F171 /* Dictionary+FAAdd.swift in Sources */, F3A792F72E77F8A80097E0BC /* FAHomeNewView.swift in Sources */, F3A792F82E77F8A80097E0BC /* FAHomeMustSeeShortView.swift in Sources */, @@ -944,8 +965,10 @@ F3A7932C2E796EF80097E0BC /* FAPlayerDetailControlView.swift in Sources */, F3A798BC2E82AB6F0097E0BC /* FAEpSelectorView.swift in Sources */, F37103512E9E1D7800E7F171 /* FASearchHomeView.swift in Sources */, + F34296942EA0E8CB00A58F99 /* FAGenresViewController.swift in Sources */, F3A792AF2E77DFB90097E0BC /* FATokenModel.swift in Sources */, F38C25FA2E86A217008C22C3 /* UIView+FAAdd.swift in Sources */, + F342969A2EA0F8E700A58F99 /* FAGenresListViewController.swift in Sources */, F3A7931A2E7911420097E0BC /* FAPagerViewTransformer.swift in Sources */, F3DCC0672E8AA14A00D58007 /* FAMeItemModel.swift in Sources */, F37103312E978F8C00E7F171 /* FACollectViewController.swift in Sources */, @@ -966,6 +989,7 @@ F3A792DC2E77F70C0097E0BC /* FAPlayerDetailViewController.swift in Sources */, F38C25FF2E86B663008C22C3 /* AppDelegate+FAConfig.swift in Sources */, F37103592E9E281C00E7F171 /* FASearchRecommendView.swift in Sources */, + F34296A02EA0FA2200A58F99 /* FAGenresListCell.swift in Sources */, F3A792BF2E77E4B80097E0BC /* FATool.swift in Sources */, F371033F2E97BDF800E7F171 /* FAHistoryViewController.swift in Sources */, F3DCC08B2E8BB16F00D58007 /* FARecommendViewController.swift in Sources */, diff --git a/Fableon/Base/Request/FAAPIPath.swift b/Fableon/Base/Request/FAAPIPath.swift index 007e1e3..f73d0b4 100644 --- a/Fableon/Base/Request/FAAPIPath.swift +++ b/Fableon/Base/Request/FAAPIPath.swift @@ -10,7 +10,7 @@ let FAWebBaseURL = "https://www.breeltv.com" let FACampaignWebURL = "https://campaign.breeltv.com" - +//hbqinjiu.com ///反馈首页 let kFAFeedBackHomeWebUrl = FACampaignWebURL + "/pages/leave/index" diff --git a/Fableon/Class/Home/C/FAGenresListViewController.swift b/Fableon/Class/Home/C/FAGenresListViewController.swift new file mode 100644 index 0000000..b8e9f1d --- /dev/null +++ b/Fableon/Class/Home/C/FAGenresListViewController.swift @@ -0,0 +1,74 @@ +// +// FAGenresListViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAGenresListViewController: FAViewController { + + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let width = floor((UIScreen.width - 32 - 16) / 3) + let height = 145 / 109 * width + 41 + + let layout = UICollectionViewFlowLayout() + layout.minimumLineSpacing = 12 + layout.minimumInteritemSpacing = 8 + layout.itemSize = .init(width: width, height: height) + layout.sectionInset = .init(top: 0, left: 16, bottom: 0, right: 16) + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.contentInset = .init(top: 20, left: 0, bottom: UIScreen.safeBottom + 10, right: 0) + collectionView.register(UINib(nibName: "FAGenresListCell", bundle: nil), forCellWithReuseIdentifier: "cell") + return collectionView + }() + + override func viewDidLoad() { + super.viewDidLoad() + + fa_setupLayout() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + fa_setNavigationStyle() + } + + + +} + +extension FAGenresListViewController { + + private func fa_setupLayout() { + view.addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FAGenresListViewController: UICollectionViewDelegate, UICollectionViewDataSource { + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 10 + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FAGenresListCell + return cell + } +} diff --git a/Fableon/Class/Home/C/FAGenresViewController.swift b/Fableon/Class/Home/C/FAGenresViewController.swift new file mode 100644 index 0000000..1c9e3fb --- /dev/null +++ b/Fableon/Class/Home/C/FAGenresViewController.swift @@ -0,0 +1,83 @@ +// +// FAGenresViewController.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAGenresViewController: FAViewController { + + + private lazy var bgColorArr: [UIColor] = [ + ._5_CA_8_FF_0_5, + .A_783_FF_0_5, + .FF_5977_0_5, + .FE_8_CCA_0_5, + .FCB_072_0_5 + ] + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let layout = UICollectionViewFlowLayout() + layout.minimumLineSpacing = 10 + layout.itemSize = .init(width: UIScreen.width - 32, height: 140) + return layout + }() + + private lazy var collectionView: FACollectionView = { + let collectionView = FACollectionView(frame: .zero, collectionViewLayout: self.collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.contentInset = .init(top: 24, left: 0, bottom: UIScreen.safeBottom + 10, right: 0) + collectionView.register(UINib(nibName: "FAGenresCell", bundle: nil), forCellWithReuseIdentifier: "cell") + return collectionView + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "Genres".localized + + fa_setupLayout() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + self.fa_setNavigationStyle() + } + +} + +extension FAGenresViewController { + + private func fa_setupLayout() { + view.addSubview(collectionView) + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(UIScreen.navBarHeight) + } + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension FAGenresViewController: UICollectionViewDelegate, UICollectionViewDataSource { + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! FAGenresCell + cell.bgView.backgroundColor = bgColorArr[indexPath.row % 5] + return cell + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + return 10 + } + + func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { + let vc = FAGenresListViewController() + self.navigationController?.pushViewController(vc, animated: true) + } + +} diff --git a/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift b/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift index 702254d..6b36348 100644 --- a/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift +++ b/Fableon/Class/Home/UI/FAHomeMustSeeContentView.swift @@ -11,6 +11,8 @@ struct FAHomeMustSeeContentView: View { @Binding var list: [FAShortPlayModel] + var moduleKey: FAHomeModuleItem.ModuleKey? + @ObservedObject var viewModel: FAHomeViewModel @@ -23,6 +25,12 @@ struct FAHomeMustSeeContentView: View { .padding(.leading, 10) .padding(.top, 12) Spacer() +// Image("Frame 3013") +// .padding(.top, 14) +// .padding(.trailing, 10) +// .onTapGesture { +// self.viewModel.pushMustSee(moduleKey) +// } } VStack(spacing: 11) { diff --git a/Fableon/Class/Home/UI/FAHomeMustSeeView.swift b/Fableon/Class/Home/UI/FAHomeMustSeeView.swift index 80d6a34..8b4eba5 100644 --- a/Fableon/Class/Home/UI/FAHomeMustSeeView.swift +++ b/Fableon/Class/Home/UI/FAHomeMustSeeView.swift @@ -86,7 +86,9 @@ struct FAHomeMustSeeView: View { } private func contentView(index: Int) -> some View { - return FAHomeMustSeeContentView(list: $viewModel.mustSeeArr[index].list, viewModel: self.viewModel) + return FAHomeMustSeeContentView(list: $viewModel.mustSeeArr[index].list, + moduleKey: viewModel.mustSeeArr[index].module_key, + viewModel: self.viewModel) .padding(.trailing, 16) } } diff --git a/Fableon/Class/Home/V/FAGenresCell.swift b/Fableon/Class/Home/V/FAGenresCell.swift new file mode 100644 index 0000000..bba7246 --- /dev/null +++ b/Fableon/Class/Home/V/FAGenresCell.swift @@ -0,0 +1,53 @@ +// +// FAGenresCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAGenresCell: UICollectionViewCell { + + + @IBOutlet weak var bgView: UIView! + + @IBOutlet weak var coverImageView: FAImageView! + + @IBOutlet weak var nameLabel: UILabel! + + @IBOutlet weak var hotCountLabel: UILabel! + + private lazy var smallImageViewArr: [UIView] = [] + + override func awakeFromNib() { + super.awakeFromNib() + coverImageView.layer.borderWidth = 3 + coverImageView.layer.borderColor = UIColor.FFFFFF.cgColor + + + for i in 0..<4 { + let imageView = createSmallCoverImageView() + contentView.addSubview(imageView) + + imageView.snp.makeConstraints { make in + make.bottom.equalToSuperview() + make.width.height.equalTo(34) + make.right.equalToSuperview().offset(-(24 + i * 23)) + } + + smallImageViewArr.append(imageView) + } + } + + + private func createSmallCoverImageView() -> UIImageView { + let imageView = FAImageView() + imageView.layer.cornerRadius = 17 + imageView.layer.masksToBounds = true + imageView.layer.borderWidth = 1 + imageView.layer.borderColor = UIColor.CEE_2_F_5.cgColor + return imageView + } + +} diff --git a/Fableon/Class/Home/V/FAGenresCell.xib b/Fableon/Class/Home/V/FAGenresCell.xib new file mode 100644 index 0000000..0601e39 --- /dev/null +++ b/Fableon/Class/Home/V/FAGenresCell.xib @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/V/FAGenresListCell.swift b/Fableon/Class/Home/V/FAGenresListCell.swift new file mode 100644 index 0000000..0910ac2 --- /dev/null +++ b/Fableon/Class/Home/V/FAGenresListCell.swift @@ -0,0 +1,17 @@ +// +// FAGenresListCell.swift +// Fableon +// +// Created by 长沙鸿瑶 on 2025/10/16. +// + +import UIKit + +class FAGenresListCell: UICollectionViewCell { + + override func awakeFromNib() { + super.awakeFromNib() + // Initialization code + } + +} diff --git a/Fableon/Class/Home/V/FAGenresListCell.xib b/Fableon/Class/Home/V/FAGenresListCell.xib new file mode 100644 index 0000000..35b4127 --- /dev/null +++ b/Fableon/Class/Home/V/FAGenresListCell.xib @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Fableon/Class/Home/VM/FAHomeViewModel.swift b/Fableon/Class/Home/VM/FAHomeViewModel.swift index fab74f3..c60b19e 100644 --- a/Fableon/Class/Home/VM/FAHomeViewModel.swift +++ b/Fableon/Class/Home/VM/FAHomeViewModel.swift @@ -125,4 +125,10 @@ extension FAHomeViewModel { FATool.topViewController?.navigationController?.pushViewController(vc, animated: true) } + func pushMustSee(_ key: FAHomeModuleItem.ModuleKey?) { + debugLog("\(key?.rawValue)") + + let vc = FAGenresViewController() + FATool.topViewController?.navigationController?.pushViewController(vc, animated: true) + } } diff --git a/Fableon/Source/Assets.xcassets/color/#5CA8FF_0.5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#5CA8FF_0.5.colorset/Contents.json new file mode 100644 index 0000000..ca13a1b --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#5CA8FF_0.5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xFF", + "green" : "0xA8", + "red" : "0x5C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/color/#A783FF_0.5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#A783FF_0.5.colorset/Contents.json new file mode 100644 index 0000000..2aadd12 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#A783FF_0.5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xFF", + "green" : "0x83", + "red" : "0xA7" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/color/#CEE2F5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#CEE2F5.colorset/Contents.json new file mode 100644 index 0000000..2385c76 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#CEE2F5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF5", + "green" : "0xE2", + "red" : "0xCE" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/color/#FCB072_0.5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#FCB072_0.5.colorset/Contents.json new file mode 100644 index 0000000..adf48a5 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#FCB072_0.5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0x72", + "green" : "0xB0", + "red" : "0xFC" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/color/#FE8CCA_0.5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#FE8CCA_0.5.colorset/Contents.json new file mode 100644 index 0000000..1e4ba4c --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#FE8CCA_0.5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0xCA", + "green" : "0x8C", + "red" : "0xFE" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/color/#FF5977_0.5.colorset/Contents.json b/Fableon/Source/Assets.xcassets/color/#FF5977_0.5.colorset/Contents.json new file mode 100644 index 0000000..920e0c4 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/color/#FF5977_0.5.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "0.500", + "blue" : "0x77", + "green" : "0x59", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Contents.json b/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Contents.json new file mode 100644 index 0000000..f526ab0 --- /dev/null +++ b/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame 3012@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame 3012@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@2x.png b/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc176555d28f889ad851d8c766ccd4844ebd07a GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBI14-?iy0WiR6&^0Gf3qFP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{$@`X$B+ufw>KVgHX8`AK3FVl(X@Dnr?rz= zhFONWf%KNyB`tjmr01x!U2zst;#Atl&ZyddXZn6cr*m>?>r!h|wmvR*`tPc$#2!8G zbN|AW`?|k$pZ3Yz`e5Za<&ET3{iZ6FMLGcvjI1I74sYFSm1}#APXCooHCXvyZ{z*o zbtm4wd$r9zGIYWJkXrYhOgsh$7?{sA&QKFf?n*RcV=>(KzAN!h!zupC;|BZUKYzKA dz_~Mtt?5+NvWK5n)dQW+;OXk;vd$@?2>=n(Xnz0z literal 0 HcmV?d00001 diff --git a/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@3x.png b/Fableon/Source/Assets.xcassets/image/Frame 3013.imageset/Frame 3012@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..59d52c71757af89d7021a18d118ef8f3de8dde97 GIT binary patch literal 374 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL1|)l2v+e>Z&H|6fVg?393lL^>oo1K-6l5$8 za(7}_cTVOdki(Mh=(k~Z1sBRbDr&aa z&s=!ZanAk59d8uQy?2Ny6L?;(pl99j+4`T^JBOtLkM`MZ6?&BCeLY{p(B@BHl#~B+ z+4AGJgBazm->#ZHHiSfIA}+s42* zfmdBVI>hFPRJUaXa}5V4RRu=QsSPYL zBI*xVIHv}1dPK~+&>}ahZj!EenvkE*v%Slf3n_LQeAc*`-5On&#APd6b*{dPg;lRE z*=VontCOBT7Or%B)WD(wG{?i`@vK)WIe+pOemdKI;Vst0IEb->Hq)$ literal 0 HcmV?d00001 diff --git a/Fableon/Source/Assets.xcassets/image/Frame 3014.imageset/Frame 3013@3x.png b/Fableon/Source/Assets.xcassets/image/Frame 3014.imageset/Frame 3013@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..77e75554517b01db9df43ce957b14403e6955e97 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?393lL^>oo1K-6l5$8 za(7}_cTVOdki(Mh=#$F{Fa=?aa5lO$GuE`hE{MdO*m{fJyp+ zS|5;kfa9yjIS&EhsNWN3eV_F2_0xOGf7>}2-aML<{iUZ&>Z40~)agW(~baDA- znPg${Tldkfz15RSELMvC4T^12FPSW(&|kxFLRp^S(+Tzln@@}i@r(DIoj%#TG5*Qz zMW56P`6q6_`Sjkfn7srqa#Bq+$BH)s2NtY7vQ+liDZLN; zVFkze)qk*VSNU_SRPF8!?O6qaYH4FFY S%sN0%GI+ZBxvXJ6o^vxdUB!MijlrB9az5pIwRAAY4Y&d4D{=#TbMLV~1ISEX#Yp>p;bA*nn|Xkk&CgwCk1A9BC788rn zOxVvxmlN3@d8xO^IM_tatRrHhKIvEEX~N%y@2M*S@ZLpi0^6sU*a2N>r}7tbpeE