diff --git a/BeeReel.xcodeproj/project.pbxproj b/BeeReel.xcodeproj/project.pbxproj index d8c640b..6b15043 100644 --- a/BeeReel.xcodeproj/project.pbxproj +++ b/BeeReel.xcodeproj/project.pbxproj @@ -158,6 +158,20 @@ F39855272E322A7100E2D28D /* BRBaseAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855262E322A7100E2D28D /* BRBaseAlert.swift */; }; F39855292E322B1800E2D28D /* BRAlertWindowManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855282E322B1800E2D28D /* BRAlertWindowManager.swift */; }; F398552B2E322C7C00E2D28D /* BRAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398552A2E322C7C00E2D28D /* BRAlert.swift */; }; + F398552D2E33126D00E2D28D /* BRMineCoinItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398552C2E33126D00E2D28D /* BRMineCoinItemView.swift */; }; + F398552F2E33179800E2D28D /* BRMineVipCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398552E2E33179800E2D28D /* BRMineVipCell.swift */; }; + F39855312E33620200E2D28D /* BRMineStoreCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855302E33620200E2D28D /* BRMineStoreCell.swift */; }; + F39855332E33629000E2D28D /* BRMineStoreItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855322E33629000E2D28D /* BRMineStoreItemView.swift */; }; + F39855372E33699900E2D28D /* BRStoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855362E33699900E2D28D /* BRStoreViewController.swift */; }; + F398553B2E336C5700E2D28D /* BRStoreAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398553A2E336C4F00E2D28D /* BRStoreAPI.swift */; }; + F398553E2E336D3000E2D28D /* BRPayDateModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398553D2E336D3000E2D28D /* BRPayDateModel.swift */; }; + F39855402E336FD700E2D28D /* BRStoreVipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398553F2E336FD700E2D28D /* BRStoreVipView.swift */; }; + F39855422E3374B500E2D28D /* BRStoreVipCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855412E3374B500E2D28D /* BRStoreVipCell.swift */; }; + F39855442E33840500E2D28D /* AaHouDiHei-Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = F39855432E33840500E2D28D /* AaHouDiHei-Regular.ttf */; }; + F39855462E338FDA00E2D28D /* BRStoreCoinView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855452E338FDA00E2D28D /* BRStoreCoinView.swift */; }; + F39855482E33928400E2D28D /* BRStoreCoinBigCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855472E33928400E2D28D /* BRStoreCoinBigCell.swift */; }; + F398554A2E33929C00E2D28D /* BRStoreCoinCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39855492E33929C00E2D28D /* BRStoreCoinCell.swift */; }; + F398554C2E3392C200E2D28D /* BRStoreCoinSmallCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F398554B2E3392C200E2D28D /* BRStoreCoinSmallCell.swift */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -327,6 +341,20 @@ F39855262E322A7100E2D28D /* BRBaseAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRBaseAlert.swift; sourceTree = ""; }; F39855282E322B1800E2D28D /* BRAlertWindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRAlertWindowManager.swift; sourceTree = ""; }; F398552A2E322C7C00E2D28D /* BRAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRAlert.swift; sourceTree = ""; }; + F398552C2E33126D00E2D28D /* BRMineCoinItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRMineCoinItemView.swift; sourceTree = ""; }; + F398552E2E33179800E2D28D /* BRMineVipCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRMineVipCell.swift; sourceTree = ""; }; + F39855302E33620200E2D28D /* BRMineStoreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRMineStoreCell.swift; sourceTree = ""; }; + F39855322E33629000E2D28D /* BRMineStoreItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRMineStoreItemView.swift; sourceTree = ""; }; + F39855362E33699900E2D28D /* BRStoreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreViewController.swift; sourceTree = ""; }; + F398553A2E336C4F00E2D28D /* BRStoreAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreAPI.swift; sourceTree = ""; }; + F398553D2E336D3000E2D28D /* BRPayDateModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRPayDateModel.swift; sourceTree = ""; }; + F398553F2E336FD700E2D28D /* BRStoreVipView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreVipView.swift; sourceTree = ""; }; + F39855412E3374B500E2D28D /* BRStoreVipCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreVipCell.swift; sourceTree = ""; }; + F39855432E33840500E2D28D /* AaHouDiHei-Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "AaHouDiHei-Regular.ttf"; sourceTree = ""; }; + F39855452E338FDA00E2D28D /* BRStoreCoinView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreCoinView.swift; sourceTree = ""; }; + F39855472E33928400E2D28D /* BRStoreCoinBigCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreCoinBigCell.swift; sourceTree = ""; }; + F39855492E33929C00E2D28D /* BRStoreCoinCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreCoinCell.swift; sourceTree = ""; }; + F398554B2E3392C200E2D28D /* BRStoreCoinSmallCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BRStoreCoinSmallCell.swift; sourceTree = ""; }; F70FA1F4169364C4C53534CE /* Pods-BeeReel.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BeeReel.release.xcconfig"; path = "Target Support Files/Pods-BeeReel/Pods-BeeReel.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -418,6 +446,10 @@ BF02B81A2E2F8FDF00172177 /* BRMineUserInfoCell.swift */, BF02B8232E2FAEB500172177 /* BRAboutUsCell.swift */, BF02B8252E2FB36A00172177 /* BRAboutUsHeaderView.swift */, + F398552C2E33126D00E2D28D /* BRMineCoinItemView.swift */, + F398552E2E33179800E2D28D /* BRMineVipCell.swift */, + F39855302E33620200E2D28D /* BRMineStoreCell.swift */, + F39855322E33629000E2D28D /* BRMineStoreItemView.swift */, ); path = View; sourceTree = ""; @@ -556,6 +588,7 @@ BF692AF22E0A478D00A5C2DA /* Sources */ = { isa = PBXGroup; children = ( + F39855432E33840500E2D28D /* AaHouDiHei-Regular.ttf */, BF692AE22E0A475D00A5C2DA /* Assets.xcassets */, BF692AE32E0A475D00A5C2DA /* Info.plist */, BF692AE52E0A475D00A5C2DA /* LaunchScreen.storyboard */, @@ -592,6 +625,7 @@ BF692AF52E0A47D400A5C2DA /* Class */ = { isa = PBXGroup; children = ( + F39855342E33697400E2D28D /* Store */, BF02B8292E30851900172177 /* Search */, BF02B8102E2F83A100172177 /* Mine */, BF02B8052E2F612200172177 /* Favorites */, @@ -889,6 +923,7 @@ BF692B712E0D395300A5C2DA /* API */ = { isa = PBXGroup; children = ( + F398553A2E336C4F00E2D28D /* BRStoreAPI.swift */, BFC676882E122FDB006659E5 /* BRVideoAPI.swift */, BFC676682E0E34D9006659E5 /* BRUserAPI.swift */, BF692B722E0D396800A5C2DA /* BRHomeAPI.swift */, @@ -1003,6 +1038,45 @@ path = Alert; sourceTree = ""; }; + F39855342E33697400E2D28D /* Store */ = { + isa = PBXGroup; + children = ( + F39855352E33697F00E2D28D /* Controller */, + F39855382E336BFD00E2D28D /* View */, + F398553C2E336CC100E2D28D /* Model */, + ); + path = Store; + sourceTree = ""; + }; + F39855352E33697F00E2D28D /* Controller */ = { + isa = PBXGroup; + children = ( + F39855362E33699900E2D28D /* BRStoreViewController.swift */, + ); + path = Controller; + sourceTree = ""; + }; + F39855382E336BFD00E2D28D /* View */ = { + isa = PBXGroup; + children = ( + F398553F2E336FD700E2D28D /* BRStoreVipView.swift */, + F39855412E3374B500E2D28D /* BRStoreVipCell.swift */, + F39855452E338FDA00E2D28D /* BRStoreCoinView.swift */, + F39855492E33929C00E2D28D /* BRStoreCoinCell.swift */, + F39855472E33928400E2D28D /* BRStoreCoinBigCell.swift */, + F398554B2E3392C200E2D28D /* BRStoreCoinSmallCell.swift */, + ); + path = View; + sourceTree = ""; + }; + F398553C2E336CC100E2D28D /* Model */ = { + isa = PBXGroup; + children = ( + F398553D2E336D3000E2D28D /* BRPayDateModel.swift */, + ); + path = Model; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -1066,6 +1140,7 @@ files = ( BF692AEE2E0A475D00A5C2DA /* Assets.xcassets in Resources */, BF692AF02E0A475D00A5C2DA /* LaunchScreen.storyboard in Resources */, + F39855442E33840500E2D28D /* AaHouDiHei-Regular.ttf in Resources */, BF692B442E0A910E00A5C2DA /* Localizable.xcstrings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1128,6 +1203,7 @@ BFC676A42E129D60006659E5 /* BRHomeTop10Cell.swift in Sources */, BF02B8262E2FB36A00172177 /* BRAboutUsHeaderView.swift in Sources */, BF692B3C2E0A8D0200A5C2DA /* BRNavigationController.swift in Sources */, + F39855332E33629000E2D28D /* BRMineStoreItemView.swift in Sources */, BFC676B12E137D2F006659E5 /* BRPopularPicksViewController.swift in Sources */, BF02B7FC2E2F262F00172177 /* BRGradientView.swift in Sources */, BFC676692E0E34DA006659E5 /* BRUserAPI.swift in Sources */, @@ -1138,12 +1214,15 @@ BF02B8392E30B30400172177 /* AlignedCollectionViewFlowLayout.swift in Sources */, BF3A56882E30E0DD009E5CF9 /* BREmpty.swift in Sources */, BF3338F52E1616B200B10F76 /* BRExploreControlView.swift in Sources */, + F398552D2E33126D00E2D28D /* BRMineCoinItemView.swift in Sources */, BF692B132E0A7B9000A5C2DA /* BRUserInfo.swift in Sources */, BF692B042E0A76D200A5C2DA /* BRLoginManager.swift in Sources */, BFC6769D2E129794006659E5 /* BRHomeTop10ViewController.swift in Sources */, BF02B80D2E2F63ED00172177 /* BRFavoritesCell.swift in Sources */, BF692AEB2E0A475D00A5C2DA /* AppDelegate.swift in Sources */, + F39855372E33699900E2D28D /* BRStoreViewController.swift in Sources */, BF02B81B2E2F8FDF00172177 /* BRMineUserInfoCell.swift in Sources */, + F398554C2E3392C200E2D28D /* BRStoreCoinSmallCell.swift in Sources */, BF02B8202E2F9B1000172177 /* BRWebViewController.swift in Sources */, BF692B242E0A825B00A5C2DA /* BRCryptorService.swift in Sources */, BF02B8242E2FAEB500172177 /* BRAboutUsCell.swift in Sources */, @@ -1171,6 +1250,7 @@ BF692B782E0D3A1200A5C2DA /* BRHomeModuleItem.swift in Sources */, BF692B5A2E0AAADD00A5C2DA /* BRPlayerListCell.swift in Sources */, BF02B8312E30897700172177 /* BRSearchHomeView.swift in Sources */, + F398554A2E33929C00E2D28D /* BRStoreCoinCell.swift in Sources */, BF3A568C2E30EBA2009E5CF9 /* BRHomePlayRecordButton.swift in Sources */, BF692B162E0A7CD600A5C2DA /* BRHUD.swift in Sources */, BF3338F72E16176900B10F76 /* BRDetailPlayerCell.swift in Sources */, @@ -1204,6 +1284,7 @@ BF02B7FF2E2F2F2900172177 /* BRHomeCategoriesCell.swift in Sources */, BF692B3A2E0A8C6000A5C2DA /* BRViewController.swift in Sources */, BFC676BE2E13A8EB006659E5 /* UIScrollView+BRRefresh.swift in Sources */, + F39855312E33620200E2D28D /* BRMineStoreCell.swift in Sources */, BF692B182E0A7D8900A5C2DA /* BRToast.swift in Sources */, BF692B0E2E0A7AF300A5C2DA /* UserDefaults+BRAdd.swift in Sources */, BF02B8082E2F616E00172177 /* BRFavoritesViewController.swift in Sources */, @@ -1212,6 +1293,8 @@ BF692B1F2E0A804600A5C2DA /* BRLocalizedManager.swift in Sources */, F39855222E32227D00E2D28D /* BRPlayHistorysViewController.swift in Sources */, BF02B7E92E2E29E900172177 /* BREpisodeSelectorCell.swift in Sources */, + F39855462E338FDA00E2D28D /* BRStoreCoinView.swift in Sources */, + F398553B2E336C5700E2D28D /* BRStoreAPI.swift in Sources */, BF02B83B2E30BB4C00172177 /* BRHotSearchView.swift in Sources */, BF02B8332E308E4300172177 /* BRSearchRecordTagCell.swift in Sources */, BF692B612E0B814F00A5C2DA /* BRTabBarItemContentView.swift in Sources */, @@ -1232,11 +1315,13 @@ F39855202E32166300E2D28D /* BRFavoritesPageViewController.swift in Sources */, BF02B80F2E2F6EEA00172177 /* BRFavoritesHeaderView.swift in Sources */, BF692B632E0B9D4800A5C2DA /* BRTabBarItem.swift in Sources */, + F39855402E336FD700E2D28D /* BRStoreVipView.swift in Sources */, BFC6768B2E123690006659E5 /* BRVideoRevolutionManager.swift in Sources */, BFC6768F2E125D5B006659E5 /* BRSpotlightTopMainCell.swift in Sources */, BF692B1C2E0A7DE800A5C2DA /* BRAppTool.swift in Sources */, BFC676622E0E2C8E006659E5 /* WMZBannerView.m in Sources */, BFC676632E0E2C8E006659E5 /* WMZBannerOverLayout.m in Sources */, + F39855482E33928400E2D28D /* BRStoreCoinBigCell.swift in Sources */, BFC676642E0E2C8E006659E5 /* WMZBannerFlowLayout.m in Sources */, BF02B81E2E2F99D900172177 /* BRWebView.swift in Sources */, BFC676652E0E2C8E006659E5 /* WMZBannerControl.m in Sources */, @@ -1256,6 +1341,7 @@ BF0DBDD12E0D4E150035F6B4 /* BRTabBar.swift in Sources */, BF692B562E0AA92100A5C2DA /* BRCollectionViewCell.swift in Sources */, BF02B7E32E2E08BD00172177 /* BRDetailEpButton.swift in Sources */, + F398553E2E336D3000E2D28D /* BRPayDateModel.swift in Sources */, BF692B072E0A771C00A5C2DA /* BRModel.swift in Sources */, BF02B82F2E30895700172177 /* BRSearchRecordView.swift in Sources */, BF692B752E0D39D000A5C2DA /* BRListModel.swift in Sources */, @@ -1263,8 +1349,10 @@ BFC676B92E1385FC006659E5 /* BRPopularPicksSmallCell.swift in Sources */, BF692B512E0AA8C600A5C2DA /* BRPlayerListViewController.swift in Sources */, BF02B8282E30821B00172177 /* BRSearchViewController.swift in Sources */, + F39855422E3374B500E2D28D /* BRStoreVipCell.swift in Sources */, BFC676522E0D4EFD006659E5 /* BRHomeViewModel.swift in Sources */, BFC676A72E12AF04006659E5 /* WaterfallMutiSectionFlowLayout.swift in Sources */, + F398552F2E33179800E2D28D /* BRMineVipCell.swift in Sources */, BF692B2A2E0A84F700A5C2DA /* JXUUID.m in Sources */, BF692B2B2E0A84F700A5C2DA /* PDKeyChain.m in Sources */, BF3A56852E30CA78009E5CF9 /* BRSearchResultCell.swift in Sources */, diff --git a/BeeReel/Base/Extension/UIColor+BRAdd.swift b/BeeReel/Base/Extension/UIColor+BRAdd.swift index 3f2fea6..f740307 100644 --- a/BeeReel/Base/Extension/UIColor+BRAdd.swift +++ b/BeeReel/Base/Extension/UIColor+BRAdd.swift @@ -107,6 +107,10 @@ extension UIColor { return UIColor(rgb: 0xE4FEFF, alpha: alpha) } + static func colorE4FFF2(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xE4FFF2, alpha: alpha) + } + static func colorFFFDF1(alpha: CGFloat = 1) -> UIColor { return UIColor(rgb: 0xFFFDF1, alpha: alpha) } @@ -126,4 +130,60 @@ extension UIColor { static func colorC2C2C2(alpha: CGFloat = 1) -> UIColor { return UIColor(rgb: 0xC2C2C2, alpha: alpha) } + + static func color005C10(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x005C10, alpha: alpha) + } + + static func color5C4A00(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x5C4A00, alpha: alpha) + } + + static func color761600(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x761600, alpha: alpha) + } + + static func color430069(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x430069, alpha: alpha) + } + + static func color2C042C(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x2C042C, alpha: alpha) + } + + static func color868686(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x868686, alpha: alpha) + } + + static func colorFFF799(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xFFF799, alpha: alpha) + } + + static func colorFBDAD0(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xFBDAD0, alpha: alpha) + } + + static func colorF3D3FC(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xF3D3FC, alpha: alpha) + } + + static func colorB45A00(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xB45A00, alpha: alpha) + } + + static func color44703E(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x44703E, alpha: alpha) + } + + static func color635D1B(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0x635D1B, alpha: alpha) + } + + static func colorA86800(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xA86800, alpha: alpha) + } + + static func colorFFB635(alpha: CGFloat = 1) -> UIColor { + return UIColor(rgb: 0xFFB635, alpha: alpha) + } } diff --git a/BeeReel/Base/Extension/UIFont+BRAdd.swift b/BeeReel/Base/Extension/UIFont+BRAdd.swift index fac8b45..15175fb 100644 --- a/BeeReel/Base/Extension/UIFont+BRAdd.swift +++ b/BeeReel/Base/Extension/UIFont+BRAdd.swift @@ -21,4 +21,8 @@ extension UIFont { static func fontBold(ofSize: CGFloat) -> UIFont { return .systemFont(ofSize: ofSize, weight: .bold) } + + static func aaHouDiHei(ofSize: CGFloat) -> UIFont { + return UIFont(name: "AaHouDiHei", size: ofSize) ?? fontMedium(ofSize: ofSize) + } } diff --git a/BeeReel/Base/Network/API/BRStoreAPI.swift b/BeeReel/Base/Network/API/BRStoreAPI.swift new file mode 100644 index 0000000..3c35f28 --- /dev/null +++ b/BeeReel/Base/Network/API/BRStoreAPI.swift @@ -0,0 +1,29 @@ +// +// BRStoreAPI.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit +import SmartCodable + +class BRStoreAPI { + enum BuyType: String, SmartCaseDefaultable { + case coins = "coins" + case subVip = "sub_vip" + } + + ///获取支付模版 + static func requestPayTemplate(isLoding: Bool = false, isToast: Bool = true, completer: ((_ model: BRPayDateModel?) -> Void)?) { + + var param = BRNetworkParameters(path: "/paySettingsV3") + param.method = .get + param.isToast = isToast + param.isLoding = isLoding + + BRNetwork.request(parameters: param) { (response: BRNetworkResponse) in + completer?(response.data) + } + } +} diff --git a/BeeReel/Base/Network/Base/BRURLPath.swift b/BeeReel/Base/Network/Base/BRURLPath.swift index 7e816ad..b78067a 100644 --- a/BeeReel/Base/Network/Base/BRURLPath.swift +++ b/BeeReel/Base/Network/Base/BRURLPath.swift @@ -37,3 +37,14 @@ let kSBFeedBackListWebUrl = BRCampaignWebURL + "/pages/leave/list" let kSBFeedBackDetailWebUrl = BRCampaignWebURL + "/pages/leave/detail" ///活动页面 let kSBRewardsWebUrl = BRCampaignWebURL + "/pages/reward/theme4" + + +/* + 官网:https://www.breeltv.com/ + 协议页面:https://www.breeltv.com/xxxxx + 反馈:https://campaign.breeltv.com/pages/leave/index 黑色传{theme:theme_1}、 白色传{theme:theme_2} + 活动页:抓紧开发中...... + 后台地址:https://admin-beereel.guyantv.com/ + w2a:https://w2a.breeltv.com/ + w2a联调地址:https://w2a.breeltv.com/?short_play_id=8&type=fb&id=168&pixel_id=123&adj_campaign={{campaign.name}}%20({{campaign.id}})&adj_adgroup={{adset.name}}%20({{adset.id}})&adj_creative={{ad.name}}%20({{ad.id}}) + */ diff --git a/BeeReel/Class/Mine/Controller/BRMineViewController.swift b/BeeReel/Class/Mine/Controller/BRMineViewController.swift index 68f693c..5622365 100644 --- a/BeeReel/Class/Mine/Controller/BRMineViewController.swift +++ b/BeeReel/Class/Mine/Controller/BRMineViewController.swift @@ -15,6 +15,12 @@ class BRMineViewController: BRViewController { [ BRMineItem(type: .userInfo), ], + [ + BRMineItem(type: .vip), + ], + [ + BRMineItem(type: .store), + ], [ BRMineItem(type: .web, icon: UIImage(named: "mine_item_icon_01"), title: "Privacy Policy".localized, url: kSBPrivacyPolicyWebUrl), // BRMineItem(type: .helpCenter, icon: UIImage(named: "mine_item_icon_02"), title: "Help Center".localized, url: ""), @@ -38,6 +44,8 @@ class BRMineViewController: BRViewController { tableView.contentInset = .init(top: 0, left: 0, bottom: UIScreen.tabbarSafeBottomMargin + 10, right: 0) tableView.register(BRMineCell.self, forCellReuseIdentifier: "cell") tableView.register(BRMineUserInfoCell.self, forCellReuseIdentifier: "userInfo") + tableView.register(BRMineVipCell.self, forCellReuseIdentifier: "vip") + tableView.register(BRMineStoreCell.self, forCellReuseIdentifier: "store") return tableView }() @@ -103,6 +111,12 @@ extension BRMineViewController: UITableViewDelegate, UITableViewDataSource { let cell = tableView.dequeueReusableCell(withIdentifier: "userInfo", for: indexPath) as! BRMineUserInfoCell cell.userInfo = BRLoginManager.manager.userInfo return cell + } else if item.type == .vip { + let cell = tableView.dequeueReusableCell(withIdentifier: "vip", for: indexPath) as! BRMineVipCell + return cell + } else if item.type == .store { + let cell = tableView.dequeueReusableCell(withIdentifier: "store", for: indexPath) as! BRMineStoreCell + return cell } let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! BRMineCell diff --git a/BeeReel/Class/Mine/Model/BRMineItem.swift b/BeeReel/Class/Mine/Model/BRMineItem.swift index a156a94..716a928 100644 --- a/BeeReel/Class/Mine/Model/BRMineItem.swift +++ b/BeeReel/Class/Mine/Model/BRMineItem.swift @@ -14,6 +14,8 @@ class BRMineItem: BRModel { case web case helpCenter case aboutUs + case vip + case store } var type: ItemType? diff --git a/BeeReel/Class/Mine/View/BRMineCoinItemView.swift b/BeeReel/Class/Mine/View/BRMineCoinItemView.swift new file mode 100644 index 0000000..7a9e2d1 --- /dev/null +++ b/BeeReel/Class/Mine/View/BRMineCoinItemView.swift @@ -0,0 +1,84 @@ +// +// BRMineCoinItemView.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRMineCoinItemView: UIView { + + var title: String? { + didSet { + titleLabel.text = title + } + } + + var coinCount: Int? { + didSet { + coinLabel.text = "\(coinCount ?? 0)" + } + } + + private lazy var coinLabel: UILabel = { + let label = UILabel() + label.font = .fontMedium(ofSize: 15) + label.textColor = .color1C1C1C() + return label + }() + + private lazy var coinImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "coins")) + return imageView + }() + + private lazy var moreImageView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "arrow_right_icon_03")) + return imageView + }() + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 12) + label.textColor = .color777777() + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + addSubview(coinLabel) + addSubview(coinImageView) + addSubview(moreImageView) + addSubview(titleLabel) + + coinLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalTo(coinImageView) + } + + coinImageView.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalTo(coinLabel.snp.right).offset(4) + } + + moreImageView.snp.makeConstraints { make in + make.centerY.equalTo(coinImageView) + make.right.equalToSuperview() + make.left.equalTo(coinImageView.snp.right).offset(1) + } + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalTo(coinImageView.snp.bottom).offset(5) + make.bottom.equalToSuperview() + } + + + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/BeeReel/Class/Mine/View/BRMineStoreCell.swift b/BeeReel/Class/Mine/View/BRMineStoreCell.swift new file mode 100644 index 0000000..ceaef80 --- /dev/null +++ b/BeeReel/Class/Mine/View/BRMineStoreCell.swift @@ -0,0 +1,66 @@ +// +// BRMineStoreCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRMineStoreCell: BRTableViewCell { + + + private lazy var shortView: BRMineStoreItemView = { + let view = BRMineStoreItemView() + view.titleLabel.text = "Store".localized + view.subtitleLabel.text = "Unlock More".localized + view.imageView.image = UIImage(named: "Store") + view.addTarget(self, action: #selector(handleShortView), for: .touchUpInside) + return view + }() + + private lazy var rewardsView: BRMineStoreItemView = { + let view = BRMineStoreItemView() + view.titleLabel.text = "Rewards".localized + view.subtitleLabel.text = "Daily Check-In".localized + view.imageView.image = UIImage(named: "Rewards") + view.addTarget(self, action: #selector(handleRewardsView), for: .touchUpInside) + return view + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + contentView.addSubview(shortView) + contentView.addSubview(rewardsView) + + shortView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.bottom.equalToSuperview() + make.height.equalTo(60) + } + + rewardsView.snp.makeConstraints { make in + make.right.top.bottom.equalToSuperview() + make.left.equalTo(shortView.snp.right).offset(11) + make.width.equalTo(shortView.snp.width) + } + + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + @objc private func handleShortView() { + let vc = BRStoreViewController() + self.viewController?.navigationController?.pushViewController(vc, animated: true) + } + + @objc private func handleRewardsView() { + + + } + + +} diff --git a/BeeReel/Class/Mine/View/BRMineStoreItemView.swift b/BeeReel/Class/Mine/View/BRMineStoreItemView.swift new file mode 100644 index 0000000..8101181 --- /dev/null +++ b/BeeReel/Class/Mine/View/BRMineStoreItemView.swift @@ -0,0 +1,62 @@ +// +// BRMineStoreItemView.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRMineStoreItemView: UIControl { + + private(set) lazy var imageView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private(set) lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .fontMedium(ofSize: 15) + label.textColor = .color000000() + return label + }() + + private(set) lazy var subtitleLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 10) + label.textColor = .color777777() + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + self.backgroundColor = .colorFFFFFF() + layer.cornerRadius = 10 + layer.masksToBounds = true + + addSubview(imageView) + addSubview(titleLabel) + addSubview(subtitleLabel) + + imageView.snp.makeConstraints { make in + make.centerY.equalToSuperview() +// make.width.height.equalTo(48) + make.left.equalToSuperview().offset(9) + } + + titleLabel.snp.makeConstraints { make in + make.left.equalTo(imageView.snp.right).offset(10) + make.top.equalToSuperview().offset(13) + } + + subtitleLabel.snp.makeConstraints { make in + make.left.equalTo(titleLabel) + make.top.equalTo(titleLabel.snp.bottom).offset(1) + } + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/BeeReel/Class/Mine/View/BRMineUserInfoCell.swift b/BeeReel/Class/Mine/View/BRMineUserInfoCell.swift index 3355d30..ef510a0 100644 --- a/BeeReel/Class/Mine/View/BRMineUserInfoCell.swift +++ b/BeeReel/Class/Mine/View/BRMineUserInfoCell.swift @@ -16,6 +16,9 @@ class BRMineUserInfoCell: BRTableViewCell { nickLabel.text = userInfo?.family_name?.isEmpty != false ? "Visitor".localized : userInfo?.family_name idLabel.text = "ID: \(userInfo?.customer_id ?? "")" + + coinView.coinCount = userInfo?.coin_left_total ?? 0 + donateView.coinCount = userInfo?.send_coin_left_total ?? 0 } } @@ -53,6 +56,20 @@ class BRMineUserInfoCell: BRTableViewCell { return label }() + private lazy var coinView: BRMineCoinItemView = { + let view = BRMineCoinItemView() + view.title = "Coins".localized + view.coinCount = 0 + return view + }() + + private lazy var donateView: BRMineCoinItemView = { + let view = BRMineCoinItemView() + view.title = "Donate".localized + view.coinCount = 0 + return view + }() + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) @@ -73,12 +90,15 @@ extension BRMineUserInfoCell { avatarBgView.addSubview(avatarImageView) contentView.addSubview(nickLabel) contentView.addSubview(idLabel) + contentView.addSubview(coinView) + contentView.addSubview(donateView) avatarBgView.snp.makeConstraints { make in make.left.equalToSuperview() make.top.equalToSuperview().offset(39) make.width.height.equalTo(68) - make.bottom.equalToSuperview().offset(-6) +// make.bottom.equalToSuperview().offset(-6) + make.bottom.equalToSuperview().offset(-76) } avatarIconImageView.snp.makeConstraints { make in @@ -101,6 +121,16 @@ extension BRMineUserInfoCell { make.left.equalTo(nickLabel) make.bottom.equalTo(avatarBgView).offset(-13) } + + coinView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalTo(avatarBgView.snp.bottom).offset(23) + } + + donateView.snp.makeConstraints { make in + make.top.equalTo(coinView) + make.left.equalTo(coinView.snp.right).offset(35) + } } } diff --git a/BeeReel/Class/Mine/View/BRMineVipCell.swift b/BeeReel/Class/Mine/View/BRMineVipCell.swift new file mode 100644 index 0000000..58ab22e --- /dev/null +++ b/BeeReel/Class/Mine/View/BRMineVipCell.swift @@ -0,0 +1,100 @@ +// +// BRMineVipCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRMineVipCell: BRTableViewCell { + + + private lazy var bgView: UIView = { + let view = UIImageView(image: UIImage(named: "vip bg")) + return view + }() + + private lazy var vipIconView: UIView = { + let view = UIImageView(image: UIImage(named: "Frame")) + return view + }() + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 12) + label.textColor = .colorFFFFFF() + label.text = "VIP Unlocks All Dramas!".localized + return label + }() + + private lazy var goView: UIView = { + let view = UIImageView(image: UIImage(named: "Frame 1508")) + return view + }() + + private lazy var markView: UIView = { + let view = UIImageView(image: UIImage(named: "Rectangle 87")) + + let label = UILabel() + label.font = .fontMedium(ofSize: 9) + label.textColor = .colorFFFFFF() + label.text = "SALE" + view.addSubview(label) + label.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(1) + } + + return view + }() + + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + br_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension BRMineVipCell { + + private func br_setupUI() { + contentView.addSubview(bgView) + bgView.addSubview(vipIconView) + bgView.addSubview(titleLabel) + bgView.addSubview(goView) + contentView.addSubview(markView) + + bgView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(4) + make.height.equalTo(52) + } + + vipIconView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(12) + } + + titleLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(vipIconView.snp.right).offset(5) + } + + goView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.right.equalToSuperview().offset(-10) + } + + markView.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-15) + make.top.equalToSuperview() + } + } + +} diff --git a/BeeReel/Class/Store/Controller/BRStoreViewController.swift b/BeeReel/Class/Store/Controller/BRStoreViewController.swift new file mode 100644 index 0000000..fd7decf --- /dev/null +++ b/BeeReel/Class/Store/Controller/BRStoreViewController.swift @@ -0,0 +1,131 @@ +// +// BRStoreViewController.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreViewController: BRViewController { + + private var payData: BRPayDateModel? + + private lazy var scrollView: BRScrollView = { + let scrollView = BRScrollView() + return scrollView + }() + + private lazy var stackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .vertical + stackView.spacing = 14 + return stackView + }() + + private lazy var vipView: BRStoreVipView = { + let view = BRStoreVipView() + return view + }() + + private lazy var coinView: BRStoreCoinView = { + let view = BRStoreCoinView() + return view + }() + + private lazy var tipView: UIView = { + let view = UIView() + let label = UILabel() + label.font = .fontRegular(ofSize: 12) + label.textColor = .colorD3D3D3() + label.numberOfLines = 0 + label.text = "kStoreTipText".localized + view.addSubview(label) + + label.snp.makeConstraints { make in + make.left.equalToSuperview().offset(15) + make.top.bottom.equalToSuperview() + make.right.lessThanOrEqualToSuperview().offset(-15) + } + + return view + }() + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "Store".localized + self.statusBarStyle = .lightContent + self.view.backgroundColor = .color1C1C1C() + + configNavigationBack("nav_back_icon_03") + + br_setupUI() + + requestPayData() + } + + override func viewWillAppear(_ animated: Bool) { + super.viewWillAppear(animated) + self.navigationController?.setNavigationBarHidden(false, animated: true) + br_setNavigation(style: .dark) + } + +} + +extension BRStoreViewController { + + private func br_setupUI() { + view.addSubview(scrollView) + scrollView.addSubview(stackView) + + scrollView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + stackView.snp.makeConstraints { make in + make.top.equalToSuperview().offset(10) + make.left.equalToSuperview() + make.width.equalTo(UIScreen.width) + make.bottom.equalToSuperview().offset(-(UIScreen.tabbarSafeBottomMargin + 10)) + } + } + +} + +extension BRStoreViewController { + + private func requestPayData() { + + BRStoreAPI.requestPayTemplate { [weak self] model in + guard let self = self else { return } + guard let model = model else { return } + + self.stackView.br_removeAllArrangedSubview() + self.payData = model + self.vipView.list = model.list_sub_vip ?? [] + self.coinView.list = model.list_coins ?? [] + + if let sort = model.sort, sort.count > 0 { + sort.forEach { + if $0 == .vip, model.list_sub_vip?.isEmpty == false { + self.stackView.addArrangedSubview(self.vipView) + } else if $0 == .coin, model.list_coins?.isEmpty == false { + self.stackView.addArrangedSubview(self.coinView) + } + } + } else { + if model.list_sub_vip?.isEmpty == false { + self.stackView.addArrangedSubview(self.vipView) + } + if model.list_coins?.isEmpty == false { + self.stackView.addArrangedSubview(self.coinView) + } + } + + self.stackView.addArrangedSubview(self.tipView) + + } + + } + +} diff --git a/BeeReel/Class/Store/Model/BRPayDateModel.swift b/BeeReel/Class/Store/Model/BRPayDateModel.swift new file mode 100644 index 0000000..2582527 --- /dev/null +++ b/BeeReel/Class/Store/Model/BRPayDateModel.swift @@ -0,0 +1,100 @@ +// +// BRPayDateModel.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit +import SmartCodable + +class BRPayDateModel: BRModel, SmartCodable { + + enum SortName: String, SmartCaseDefaultable { + case coin = "list_coins" + case vip = "list_sub_vip" + } + + var list_coins: [BRPayItem]? + var list_sub_vip: [BRPayItem]? + var sort: [SortName]? +} + + +class BRPayItem: BRModel, SmartCodable { + + enum VipTypeKey: String, SmartCaseDefaultable { + case week = "week" + case month = "month" + case quarter = "quarter" + case year = "year" + } + + enum SizeType: String, SmartCaseDefaultable { + case big = "big" + case small = "small" + } + + + var id: String? + var status: String? + var price: String? + var origin_price: String? + var backhaul_price: String? + var coins: Int? + var send_coins: Int? + var buy_type: BRStoreAPI.BuyType? + + var vip_type: String? + var vip_type_key: VipTypeKey? + + var sort: String? + var sp_description: String? + var brief: String? + var title: String? + + var send_coin_ttl: Int? + + var size: SizeType? + + + + var ios_template_id: String? + ///角标 + var corner_marker: String? + ///平台 + var platform: String? + ///货币符号 + var currency: String? + + + static func mappingForKey() -> [SmartKeyTransformer]? { + return [ + CodingKeys.sp_description <--- ["description"] + ] + } + + + + func getTimeString() -> String? { + switch self.vip_type_key { + case .week: + return "week".localized + + case .month: + return "month".localized + + case .quarter: + return "quarter".localized + + case .year: + return "year".localized + + default: + return nil + } + + + } + +} diff --git a/BeeReel/Class/Store/View/BRStoreCoinBigCell.swift b/BeeReel/Class/Store/View/BRStoreCoinBigCell.swift new file mode 100644 index 0000000..7db2c2b --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreCoinBigCell.swift @@ -0,0 +1,69 @@ +// +// BRStoreCoinBigCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreCoinBigCell: BRStoreCoinCell { + + override var item: BRPayItem? { + didSet { + if item?.corner_marker?.isEmpty == false { + self.hotView.isHidden = false + } else { + self.hotView.isHidden = true + } + } + } + + lazy var hotView: UIImageView = { + let imageView = UIImageView(image: UIImage(named: "hot_icon_04")) + return imageView + }() + + override init(frame: CGRect) { + super.init(frame: frame) + bgView.image = UIImage(named: "Frame 89") + + coinLabel.font = .fontBold(ofSize: 20) + coinLabel.textColor = .color2C042C() + + sendCoinLabel.textColor = .colorB45A00() + sendCoinLabel.font = .fontMedium(ofSize: 14) + + unitLabel.textColor = .colorA86800() + unitLabel.font = .fontMedium(ofSize: 14).withBoldItalic() + + + priceLabel.textColor = .colorA86800() + priceLabel.font = .fontBold(ofSize: 20).withBoldItalic() + + sendRatioBgView.backgroundColor = .colorFFB635() + + bgView.addSubview(hotView) + + hotView.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-5) + make.top.equalToSuperview().offset(4) + } + + + coinBgView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(9) + make.top.equalToSuperview().offset(27) + } + + sendCoinLabel.snp.makeConstraints { make in + make.centerY.equalTo(coinBgView) + make.left.equalTo(coinBgView.snp.right).offset(4) + } + + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/BeeReel/Class/Store/View/BRStoreCoinCell.swift b/BeeReel/Class/Store/View/BRStoreCoinCell.swift new file mode 100644 index 0000000..d8d79cb --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreCoinCell.swift @@ -0,0 +1,150 @@ +// +// BRStoreCoinCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreCoinCell: BRCollectionViewCell { + + var item: BRPayItem? { + didSet { + coinLabel.text = "\(item?.coins ?? 0)" + + if let sendCoins = item?.send_coins, sendCoins > 0, let coins = item?.coins { + sendCoinLabel.isHidden = false + sendRatioBgView.isHidden = false + + sendCoinLabel.text = "+\(sendCoins)" + + let ratio = String(format: "%.0f", CGFloat(sendCoins) / CGFloat(coins) * 100) + sendRatioLabel.text = "+\(ratio)%" + + } else { + sendCoinLabel.isHidden = true + sendRatioBgView.isHidden = true + } + + unitLabel.text = item?.currency + priceLabel.text = item?.price + } + } + + private(set) lazy var bgView: UIImageView = { + let view = UIImageView() + return view + }() + + lazy var coinBgView: UIView = { + let view = UIView() + return view + }() + + private lazy var coinIconView: UIView = { + let view = UIImageView(image: UIImage(named: "coins")) + return view + }() + + lazy var coinLabel: UILabel = { + let label = UILabel() + return label + }() + + lazy var sendCoinLabel: UILabel = { + let label = UILabel() + return label + }() + + lazy var priceBgView: UIView = { + let view = UIView() + return view + }() + + lazy var unitLabel: UILabel = { + let label = UILabel() + return label + }() + + lazy var priceLabel: UILabel = { + let label = UILabel() + return label + }() + + lazy var sendRatioBgView: UIView = { + let view = UIView() + view.br_setRoundedCorner(topLeft: 10, topRight: 0, bottomLeft: 0, bottomRight: 10) + return view + }() + + lazy var sendRatioLabel: UILabel = { + let label = UILabel() + label.font = .fontMedium(ofSize: 10) + label.textColor = .colorFFFFFF() + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + contentView.addSubview(bgView) + bgView.addSubview(coinBgView) + coinBgView.addSubview(coinIconView) + coinBgView.addSubview(coinLabel) + bgView.addSubview(sendCoinLabel) + bgView.addSubview(priceBgView) + priceBgView.addSubview(unitLabel) + priceBgView.addSubview(priceLabel) + bgView.addSubview(sendRatioBgView) + sendRatioBgView.addSubview(sendRatioLabel) + + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + coinIconView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + } + + coinLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(coinIconView.snp.right).offset(4) + make.right.equalToSuperview() + } + + priceBgView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.bottom.equalToSuperview() + make.height.equalTo(24) + } + + unitLabel.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalToSuperview().offset(1) + } + + priceLabel.snp.makeConstraints { make in + make.left.equalTo(unitLabel.snp.right).offset(0) + make.centerY.equalToSuperview() + make.right.equalToSuperview() + } + + sendRatioBgView.snp.makeConstraints { make in + make.left.top.equalToSuperview() + make.height.equalTo(16) + } + + sendRatioLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(8) + make.right.equalToSuperview().offset(-8) + } + + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} diff --git a/BeeReel/Class/Store/View/BRStoreCoinSmallCell.swift b/BeeReel/Class/Store/View/BRStoreCoinSmallCell.swift new file mode 100644 index 0000000..c3d30d0 --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreCoinSmallCell.swift @@ -0,0 +1,46 @@ +// +// BRStoreCoinSmallCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreCoinSmallCell: BRStoreCoinCell { + + + override init(frame: CGRect) { + super.init(frame: frame) + bgView.image = UIImage(named: "Frame 1517") + + coinLabel.font = .fontMedium(ofSize: 20) + coinLabel.textColor = .color2C042C() + + sendCoinLabel.textColor = .color44703E() + sendCoinLabel.font = .fontMedium(ofSize: 12) + + unitLabel.textColor = .color635D1B() + unitLabel.font = .fontMedium(ofSize: 12).withBoldItalic() + + priceLabel.textColor = .color635D1B() + priceLabel.font = .fontBold(ofSize: 16).withBoldItalic() + + sendRatioBgView.backgroundColor = .color44703E() + + + coinBgView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(23) + } + + sendCoinLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(coinBgView.snp.bottom).offset(2) + } + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} diff --git a/BeeReel/Class/Store/View/BRStoreCoinView.swift b/BeeReel/Class/Store/View/BRStoreCoinView.swift new file mode 100644 index 0000000..0748b87 --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreCoinView.swift @@ -0,0 +1,176 @@ +// +// BRStoreCoinView.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreCoinView: UIView { + + var list: [BRPayItem] = [] { + didSet { + + var bigList: [BRPayItem] = [] + var smallList: [BRPayItem] = [] + + list.forEach { + if $0.size == .big { + bigList.append($0) + } else { + smallList.append($0) + } + } + + self.newList = [bigList, smallList] + + + self.collectionView.reloadData() + } + } + + private var newList: [[BRPayItem]] = [] + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.textColor = .colorFFFFFF() + label.font = .fontMedium(ofSize: 14) + label.text = "kCoinTipText".localized + return label + }() + + private lazy var collectionViewLayout: WaterfallMutiSectionFlowLayout = { + let layout = WaterfallMutiSectionFlowLayout() + layout.delegate = self + return layout + }() + + private lazy var collectionView: BRCollectionView = { + let collectionView = BRCollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.delegate = self + collectionView.dataSource = self + collectionView.showsVerticalScrollIndicator = false + collectionView.showsHorizontalScrollIndicator = false + collectionView.layer.masksToBounds = false + collectionView.addObserver(self, forKeyPath: "contentSize", context: nil) + collectionView.register(BRStoreCoinBigCell.self, forCellWithReuseIdentifier: "big") + collectionView.register(BRStoreCoinSmallCell.self, forCellWithReuseIdentifier: "small") + return collectionView + }() + + deinit { + collectionView.removeObserver(self, forKeyPath: "contentSize") + } + + + override init(frame: CGRect) { + super.init(frame: frame) + + br_setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "contentSize" { + let height = self.collectionView.contentSize.height + collectionView.snp.updateConstraints { make in + make.height.equalTo(height + 1) + } + } + } + +} + +extension BRStoreCoinView { + + private func br_setupUI() { + addSubview(titleLabel) + addSubview(collectionView) + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(15) + make.top.equalToSuperview() + } + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(19) + make.height.equalTo(1) + } + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension BRStoreCoinView: UICollectionViewDelegate, UICollectionViewDataSource { + func numberOfSections(in collectionView: UICollectionView) -> Int { + self.newList.count + } + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + self.newList[section].count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let item = self.newList[indexPath.section][indexPath.row] + let identifier: String + + if item.size == .big { + identifier = "big" + } else { + identifier = "small" + } + + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! BRStoreCoinCell + cell.item = item + return cell + } + + + + + +} + +//MARK: WaterfallMutiSectionDelegate +extension BRStoreCoinView: WaterfallMutiSectionDelegate { + + func heightForRowAtIndexPath(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, indexPath: IndexPath, itemWidth: CGFloat) -> CGFloat { + let item = self.newList[indexPath.section].first + if item?.size == .big { + return 80 + } else { + return 90 + } + } + + func columnNumber(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, section: Int) -> Int { + let item = self.newList[section].first + if item?.size == .big { + return 2 + } else { + return 3 + } + } + + func insetForSection(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, section: Int) -> UIEdgeInsets { + return .init(top: 0, left: 15, bottom: 0, right: 15) + } + + func lineSpacing(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, section: Int) -> CGFloat { + return 10 + } + + func interitemSpacing(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, section: Int) -> CGFloat { + return 10 + } + + func spacingWithLastSection(collectionView collection: UICollectionView, layout: WaterfallMutiSectionFlowLayout, section: Int) -> CGFloat { + return 10 + } + +} diff --git a/BeeReel/Class/Store/View/BRStoreVipCell.swift b/BeeReel/Class/Store/View/BRStoreVipCell.swift new file mode 100644 index 0000000..5be19fe --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreVipCell.swift @@ -0,0 +1,216 @@ +// +// BRStoreVipCell.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreVipCell: BRCollectionViewCell { + + var item: BRPayItem? { + didSet { + vipNameLabel.text = item?.title + unitLabel.text = item?.currency + priceLabel.text = item?.price + timeLabel.text = "/\(item?.getTimeString() ?? "")" + descLabel.text = item?.sp_description + + if let coins = item?.send_coins, coins > 0 { + coinLabel.text = "+Extra".localized + " \(coins)" + coinBgView.isHidden = false + } else { + coinBgView.isHidden = true + } + + switch item?.vip_type_key { + case .week: + bgView.image = UIImage(named: "Rectangle 89") + bgIconView.image = UIImage(named: "vip-week") + vipIconView.image = UIImage(named: "周") + vipNameLabel.textColor = .color005C10() + coinBgView.backgroundColor = .colorE4FFF2() + + case .month: + bgView.image = UIImage(named: "Rectangle 90") + bgIconView.image = UIImage(named: "vip-month") + vipIconView.image = UIImage(named: "月") + vipNameLabel.textColor = .color5C4A00() + coinBgView.backgroundColor = .colorFFF799() + + case .quarter: + bgView.image = UIImage(named: "Rectangle 91") + bgIconView.image = UIImage(named: "vip-quarter") + vipIconView.image = UIImage(named: "Frame 1") + vipNameLabel.textColor = .color761600() + coinBgView.backgroundColor = .colorFBDAD0() + + case .year: + bgView.image = UIImage(named: "Rectangle 92") + bgIconView.image = UIImage(named: "vip-year") + vipIconView.image = UIImage(named: "Frame 2") + vipNameLabel.textColor = .color430069() + coinBgView.backgroundColor = .colorF3D3FC() + + default: + break + } + + coinLabel.textColor = vipNameLabel.textColor + } + } + + + private lazy var bgView: UIImageView = { + let view = UIImageView() + return view + }() + + private lazy var bgIconView: UIImageView = { + let view = UIImageView() + return view + }() + + private lazy var vipIconView: UIImageView = { + let view = UIImageView() + return view + }() + + private lazy var vipNameLabel: UILabel = { + let label = UILabel() + label.font = .fontMedium(ofSize: 12) + return label + }() + + private lazy var unitLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 16) + label.textColor = .color2C042C() + return label + }() + + private lazy var priceLabel: UILabel = { + let label = UILabel() + label.font = .aaHouDiHei(ofSize: 28) + label.textColor = .color2C042C() + return label + }() + + private lazy var timeLabel: UILabel = { + let label = UILabel() + label.font = .fontMedium(ofSize: 14) + label.textColor = .color2C042C() + return label + }() + + private lazy var descLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 10) + label.textColor = .color868686() + return label + }() + + private lazy var coinBgView: UIView = { + let view = UIView() + view.br_setRoundedCorner(topLeft: 10, topRight: 0, bottomLeft: 0, bottomRight: 10) + return view + }() + + private lazy var coinLabel: UILabel = { + let label = UILabel() + label.font = .fontRegular(ofSize: 12) + return label + }() + + private lazy var coinIconView: UIImageView = { + let view = UIImageView(image: UIImage(named: "coins 1")) + return view + }() + + + override init(frame: CGRect) { + super.init(frame: frame) + + br_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension BRStoreVipCell { + + private func br_setupUI() { + contentView.addSubview(bgView) + contentView.addSubview(bgIconView) + bgView.addSubview(vipIconView) + bgView.addSubview(vipNameLabel) + bgView.addSubview(unitLabel) + bgView.addSubview(priceLabel) + bgView.addSubview(timeLabel) + bgView.addSubview(descLabel) + bgView.addSubview(coinBgView) + coinBgView.addSubview(coinLabel) + coinBgView.addSubview(coinIconView) + + bgView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(10) + } + + bgIconView.snp.makeConstraints { make in + make.top.equalToSuperview() + make.right.equalToSuperview().offset(-2) + } + + vipIconView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(11) + make.top.equalToSuperview().offset(8) + } + + vipNameLabel.snp.makeConstraints { make in + make.centerY.equalTo(vipIconView) + make.left.equalTo(vipIconView.snp.right).offset(3) + } + + unitLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(13) + make.top.equalToSuperview().offset(37) + } + + priceLabel.snp.makeConstraints { make in + make.left.equalTo(unitLabel.snp.right).offset(1) + make.bottom.equalTo(unitLabel).offset(5) + } + + timeLabel.snp.makeConstraints { make in + make.left.equalTo(priceLabel.snp.right).offset(1) + make.bottom.equalTo(unitLabel).offset(-2) + } + + descLabel.snp.makeConstraints { make in + make.left.equalTo(unitLabel) + make.bottom.equalToSuperview().offset(-15) + } + + coinBgView.snp.makeConstraints { make in + make.right.bottom.equalToSuperview() + make.height.equalTo(20) + } + + coinLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(9) + make.centerY.equalToSuperview() + } + + coinIconView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(coinLabel.snp.right).offset(3) + make.right.equalToSuperview().offset(-6) + } + } + +} diff --git a/BeeReel/Class/Store/View/BRStoreVipView.swift b/BeeReel/Class/Store/View/BRStoreVipView.swift new file mode 100644 index 0000000..174199c --- /dev/null +++ b/BeeReel/Class/Store/View/BRStoreVipView.swift @@ -0,0 +1,103 @@ +// +// BRStoreVipView.swift +// BeeReel +// +// Created by 长沙鸿瑶 on 2025/7/25. +// + +import UIKit + +class BRStoreVipView: UIView { + + var list: [BRPayItem] = [] { + didSet { + self.collectionView.reloadData() + } + } + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.textColor = .colorFFFFFF() + label.font = .fontMedium(ofSize: 14) + label.text = "kVipTipText".localized + return label + }() + + private lazy var collectionViewLayout: UICollectionViewFlowLayout = { + let layout = UICollectionViewFlowLayout() + layout.itemSize = .init(width: UIScreen.width - 30, height: 100) + layout.minimumLineSpacing = 5 + layout.minimumInteritemSpacing = 5 + return layout + }() + + private lazy var collectionView: BRCollectionView = { + let collectionView = BRCollectionView(frame: .zero, collectionViewLayout: collectionViewLayout) + collectionView.isScrollEnabled = false + collectionView.delegate = self + collectionView.dataSource = self + collectionView.addObserver(self, forKeyPath: "contentSize", context: nil) + collectionView.register(BRStoreVipCell.self, forCellWithReuseIdentifier: "cell") + return collectionView + }() + + deinit { + collectionView.removeObserver(self, forKeyPath: "contentSize") + } + + override init(frame: CGRect) { + super.init(frame: frame) + br_setupUI() + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { + if keyPath == "contentSize" { + let height = self.collectionView.contentSize.height + collectionView.snp.updateConstraints { make in + make.height.equalTo(height + 1) + } + } + } + +} + +extension BRStoreVipView { + + private func br_setupUI() { + addSubview(titleLabel) + addSubview(collectionView) + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(15) + make.top.equalToSuperview() + } + + collectionView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalToSuperview().offset(19) + make.height.equalTo(1) + } + + } + +} + +//MARK: UICollectionViewDelegate UICollectionViewDataSource +extension BRStoreVipView: UICollectionViewDelegate, UICollectionViewDataSource { + + func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { + self.list.count + } + + func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { + let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! BRStoreVipCell + cell.item = list[indexPath.row] + return cell + } + + +} diff --git a/BeeReel/Sources/AaHouDiHei-Regular.ttf b/BeeReel/Sources/AaHouDiHei-Regular.ttf new file mode 100644 index 0000000..be537fa Binary files /dev/null and b/BeeReel/Sources/AaHouDiHei-Regular.ttf differ diff --git a/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json b/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json index e971063..4145a6a 100644 --- a/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "GleeStream 1.png", + "filename" : "GleeStream 1.jpg", "idiom" : "universal", "platform" : "ios", "size" : "1024x1024" diff --git a/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.jpg b/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.jpg new file mode 100644 index 0000000..602802c Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.jpg differ diff --git a/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.png b/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.png deleted file mode 100644 index 00b0ce3..0000000 Binary files a/BeeReel/Sources/Assets.xcassets/AppIcon.appiconset/GleeStream 1.png and /dev/null differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@2x.png new file mode 100644 index 0000000..17ccc90 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@3x.png new file mode 100644 index 0000000..8cda015 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1.imageset/Frame@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Contents.json new file mode 100644 index 0000000..bfb2417 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame 1508@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame 1508@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@2x.png new file mode 100644 index 0000000..cfd7238 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@3x.png new file mode 100644 index 0000000..d96dd0c Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1508.imageset/Frame 1508@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Contents.json new file mode 100644 index 0000000..01d7675 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame 1517@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame 1517@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@2x.png new file mode 100644 index 0000000..4e57795 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@3x.png new file mode 100644 index 0000000..04e7551 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 1517.imageset/Frame 1517@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@2x.png new file mode 100644 index 0000000..efe035b Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@3x.png new file mode 100644 index 0000000..499673a Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 2.imageset/Frame@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Contents.json new file mode 100644 index 0000000..a3d3f12 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame 89@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame 89@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@2x.png new file mode 100644 index 0000000..035c0cd Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@3x.png new file mode 100644 index 0000000..7f21c9a Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame 89.imageset/Frame 89@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Contents.json new file mode 100644 index 0000000..5c4d3b1 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@2x.png new file mode 100644 index 0000000..e8aadff Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@3x.png new file mode 100644 index 0000000..a3d3f49 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Frame.imageset/Frame@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Contents.json new file mode 100644 index 0000000..e05222d --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 87@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 87@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@2x.png new file mode 100644 index 0000000..2b9fc46 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@3x.png new file mode 100644 index 0000000..704ecab Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 87.imageset/Rectangle 87@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Contents.json new file mode 100644 index 0000000..311a37b --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 89@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 89@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@2x.png new file mode 100644 index 0000000..0ef82d9 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@3x.png new file mode 100644 index 0000000..281d04e Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 89.imageset/Rectangle 89@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Contents.json new file mode 100644 index 0000000..311a37b --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 89@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 89@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@2x.png new file mode 100644 index 0000000..1d931e4 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@3x.png new file mode 100644 index 0000000..cbe5267 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 90.imageset/Rectangle 89@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Contents.json new file mode 100644 index 0000000..311a37b --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 89@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 89@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@2x.png new file mode 100644 index 0000000..9123610 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@3x.png new file mode 100644 index 0000000..90d58fc Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 91.imageset/Rectangle 89@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Contents.json new file mode 100644 index 0000000..311a37b --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 89@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 89@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@2x.png new file mode 100644 index 0000000..931bfbe Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@3x.png new file mode 100644 index 0000000..41a3309 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rectangle 92.imageset/Rectangle 89@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Contents.json new file mode 100644 index 0000000..c1e27a9 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rewards@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rewards@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@2x.png new file mode 100644 index 0000000..0897ec2 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@3x.png new file mode 100644 index 0000000..c0df882 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Rewards.imageset/Rewards@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Contents.json new file mode 100644 index 0000000..1331e58 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Store@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Store@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@2x.png b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@2x.png new file mode 100644 index 0000000..c1dd18b Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@3x.png b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@3x.png new file mode 100644 index 0000000..a1df2f2 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/Store.imageset/Store@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Contents.json new file mode 100644 index 0000000..3beb505 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Frame.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Frame@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame.png b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame.png new file mode 100644 index 0000000..ee6f7f6 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame@3x.png b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame@3x.png new file mode 100644 index 0000000..dd1ec39 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/arrow_right_icon_03.imageset/Frame@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/Contents.json new file mode 100644 index 0000000..ef6097c --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "coins@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "coins@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@2x.png b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@2x.png new file mode 100644 index 0000000..cad645d Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@3x.png b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@3x.png new file mode 100644 index 0000000..118eb6b Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/coins 1.imageset/coins@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/Contents.json new file mode 100644 index 0000000..ef6097c --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "coins@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "coins@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@2x.png b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@2x.png new file mode 100644 index 0000000..dd3fdd8 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@3x.png b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@3x.png new file mode 100644 index 0000000..03d4231 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/coins.imageset/coins@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@2x.png b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@2x.png new file mode 100644 index 0000000..5e00493 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@3x.png b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@3x.png new file mode 100644 index 0000000..4aca3ed Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Component 46@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Contents.json new file mode 100644 index 0000000..e2213ad --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/nav_back_icon_03.imageset/Contents.json @@ -0,0 +1,25 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Component 46@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Component 46@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "original" + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/Contents.json new file mode 100644 index 0000000..8d3dbf5 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@2x.png b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@2x.png new file mode 100644 index 0000000..f7c9cd2 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@3x.png b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@3x.png new file mode 100644 index 0000000..1310f4b Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip bg.imageset/vip bg@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/Contents.json new file mode 100644 index 0000000..bdfb97a --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip-month@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip-month@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@2x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@2x.png new file mode 100644 index 0000000..a0a3983 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@3x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@3x.png new file mode 100644 index 0000000..2b46df0 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-month.imageset/vip-month@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/Contents.json new file mode 100644 index 0000000..ec2589c --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip-quarter@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip-quarter@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@2x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@2x.png new file mode 100644 index 0000000..9bb3abd Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@3x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@3x.png new file mode 100644 index 0000000..fb3590a Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-quarter.imageset/vip-quarter@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/Contents.json new file mode 100644 index 0000000..ee75166 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip-week@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip-week@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@2x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@2x.png new file mode 100644 index 0000000..2766931 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@3x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@3x.png new file mode 100644 index 0000000..9361a68 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-week.imageset/vip-week@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/Contents.json new file mode 100644 index 0000000..5534fae --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "vip-year@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "vip-year@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@2x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@2x.png new file mode 100644 index 0000000..1026d73 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@3x.png b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@3x.png new file mode 100644 index 0000000..3a57d14 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/vip-year.imageset/vip-year@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/周.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/Contents.json new file mode 100644 index 0000000..77eecb2 --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "周@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "周@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@2x.png b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@2x.png new file mode 100644 index 0000000..d397b12 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@3x.png b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@3x.png new file mode 100644 index 0000000..8275e22 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/周.imageset/周@3x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/月.imageset/Contents.json b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/Contents.json new file mode 100644 index 0000000..55a2c5d --- /dev/null +++ b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "月@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "月@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@2x.png b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@2x.png new file mode 100644 index 0000000..80ff03d Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@2x.png differ diff --git a/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@3x.png b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@3x.png new file mode 100644 index 0000000..2256290 Binary files /dev/null and b/BeeReel/Sources/Assets.xcassets/icon/月.imageset/月@3x.png differ diff --git a/BeeReel/Sources/Info.plist b/BeeReel/Sources/Info.plist index 0eb786d..a65a270 100644 --- a/BeeReel/Sources/Info.plist +++ b/BeeReel/Sources/Info.plist @@ -2,6 +2,10 @@ + UIAppFonts + + AaHouDiHei-Regular.ttf + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes diff --git a/BeeReel/Sources/Localizable.xcstrings b/BeeReel/Sources/Localizable.xcstrings index c033e2f..0c3dc65 100644 --- a/BeeReel/Sources/Localizable.xcstrings +++ b/BeeReel/Sources/Localizable.xcstrings @@ -1,6 +1,17 @@ { "sourceLanguage" : "en", "strings" : { + "+Extra" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "+Extra" + } + } + } + }, "About Us" : { "extractionState" : "manual", "localizations" : { @@ -89,6 +100,17 @@ } } }, + "Daily Check-In" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Daily Check-In" + } + } + } + }, "EP.##" : { "extractionState" : "manual", "localizations" : { @@ -166,6 +188,17 @@ } } }, + "kCoinTipText" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Stock Coins | Binge Freely" + } + } + } + }, "kNormalRmptyDetail" : { "extractionState" : "manual", "localizations" : { @@ -232,6 +265,28 @@ } } }, + "kStoreTipText" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "1. Coins are virtual items and cannot be refunded. Use it for this product. \n\n2. Gold coins will never expire, the reward coins will expire 24 hours a day.\n\r\n3. Coins will be used first when unlocking episodes. If the amount is insufficient, reward coins will automatically be used. \n\r\n4. The purchase has not been credited, click torefresh. \n\r\n5. For other questions, contact us via Profile>Help &feedback." + } + } + } + }, + "kVipTipText" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Go VIP | Auto renew, cancel anytime " + } + } + } + }, "Last Searched" : { "extractionState" : "manual", "localizations" : { @@ -243,6 +298,17 @@ } } }, + "month" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "month" + } + } + } + }, "Most Searched" : { "extractionState" : "manual", "localizations" : { @@ -287,6 +353,17 @@ } } }, + "quarter" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "quarter" + } + } + } + }, "Remove" : { "extractionState" : "manual", "localizations" : { @@ -298,6 +375,17 @@ } } }, + "Rewards" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Rewards" + } + } + } + }, "Search Results" : { "extractionState" : "manual", "localizations" : { @@ -331,6 +419,17 @@ } } }, + "Store" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Store" + } + } + } + }, "Third-party information sharing list" : { "extractionState" : "manual", "localizations" : { @@ -364,6 +463,17 @@ } } }, + "Unlock More" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "Unlock More" + } + } + } + }, "User Agreement" : { "extractionState" : "manual", "localizations" : { @@ -375,6 +485,17 @@ } } }, + "VIP Unlocks All Dramas!" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "VIP Unlocks All Dramas!" + } + } + } + }, "Visitor" : { "extractionState" : "manual", "localizations" : { @@ -386,6 +507,28 @@ } } }, + "week" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "week" + } + } + } + }, + "year" : { + "extractionState" : "manual", + "localizations" : { + "en" : { + "stringUnit" : { + "state" : "translated", + "value" : "year" + } + } + } + }, "Youth Internet Civility Convention" : { "extractionState" : "manual", "localizations" : {