diff --git a/XSeri/Base/Networking/API/XSStoreAPI.swift b/XSeri/Base/Networking/API/XSStoreAPI.swift index 46b88aa..b71bab9 100644 --- a/XSeri/Base/Networking/API/XSStoreAPI.swift +++ b/XSeri/Base/Networking/API/XSStoreAPI.swift @@ -74,7 +74,7 @@ struct XSStoreAPI { param.method = .post param.isLoding = isLoding param.isToast = isToast - param.parameters = parameters +// param.parameters = parameters let response: XSNetwork.Response = await XSNetwork.request(parameters: param) return response.data diff --git a/XSeri/Class/Store/Controller/XSCoinsPackViewController.swift b/XSeri/Class/Store/Controller/XSCoinsPackViewController.swift index 53db6ef..016ef45 100644 --- a/XSeri/Class/Store/Controller/XSCoinsPackViewController.swift +++ b/XSeri/Class/Store/Controller/XSCoinsPackViewController.swift @@ -6,13 +6,29 @@ // import UIKit +import SnapKit class XSCoinsPackViewController: XSViewController { - + + + private var contentBgBorderImage = UIImage(named: "gradient_color_image_03") + + private lazy var mainBgView = UIImageView(image: UIImage(named: "coins_pack_bg_01")) + + private lazy var contentBgView: UIImageView = { + let view = UIImageView(image: UIImage(named: "coins_pack_bg_02")) + view.layer.cornerRadius = 26 + view.layer.masksToBounds = true + view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner] + view.layer.borderWidth = 1 + return view + }() + override func viewDidLoad() { super.viewDidLoad() - + self.title = "My Refills".localized + xs_setupUI() } @@ -21,5 +37,31 @@ class XSCoinsPackViewController: XSViewController { self.navigationController?.setNavigationBarHidden(false, animated: true) xs_setNavigationStyle() } + + override func viewWillLayoutSubviews() { + super.viewWillLayoutSubviews() + + contentBgBorderImage = contentBgBorderImage?.xs_resized(to: contentBgView.bounds.size) + contentBgView.layer.borderColor = UIColor(patternImage: contentBgBorderImage!).cgColor + } } + + +extension XSCoinsPackViewController { + + private func xs_setupUI() { + view.addSubview(mainBgView) + view.addSubview(contentBgView) + + mainBgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + contentBgView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.top.equalTo(self.view.safeAreaLayoutGuide) + } + } + +} diff --git a/XSeri/Class/Store/Model/XSPayItem.swift b/XSeri/Class/Store/Model/XSPayItem.swift index 3095d6c..fc290a9 100644 --- a/XSeri/Class/Store/Model/XSPayItem.swift +++ b/XSeri/Class/Store/Model/XSPayItem.swift @@ -95,6 +95,45 @@ class XSPayItem: NSObject, SmartCodable { CodingKeys.xs_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 + } + } + + func getVipTitle() -> String? { + switch self.vip_type_key { + case .week: + return "Weekly VIP".localized + + case .month: + return "Monthly VIP".localized + + case .quarter: + return "Quarterly VIP".localized + + case .year: + return "Yearly VIP".localized + + default: + return nil + } + } + } class XSPayExtInfo: NSObject, SmartCodable { diff --git a/XSeri/Class/Store/View/XSStoreCoinsBigCell.swift b/XSeri/Class/Store/View/XSStoreCoinsBigCell.swift index a64e29a..c09045b 100644 --- a/XSeri/Class/Store/View/XSStoreCoinsBigCell.swift +++ b/XSeri/Class/Store/View/XSStoreCoinsBigCell.swift @@ -6,20 +6,105 @@ // import UIKit +import SnapKit class XSStoreCoinsBigCell: XSStoreCell { + override var item: XSPayItem? { + didSet { + let coins = item?.coins ?? 0 + let sendCoins = item?.send_coins ?? 0 + + coinsLabel.text = "\(coins)" + + if sendCoins > 0 { + sendCoinsLabel.isHidden = false + sendCoinsRatioView.isHidden = false + + sendCoinsLabel.text = "+ \(sendCoins) " + "Bonus".localized + + let ratio = String(format: "%.0f", CGFloat(sendCoins) / CGFloat(coins) * 100) + sendCoinsRatioLabel.text = "+\(ratio)%" + } else { + sendCoinsLabel.isHidden = true + sendCoinsRatioView.isHidden = true + } + + priceLabel.text = "\(item?.currency ?? "")\(item?.price ?? "")" + if let make = item?.corner_marker, !make.isEmpty { + hotView.isHidden = false + } else { + hotView.isHidden = true + } + } + } private lazy var bgView: XSView = { let view = XSView() - view.xs_colors = [] + view.xs_colors = [UIColor._703_BDE.cgColor, UIColor.D_567_F_1.cgColor] + view.xs_startPoint = .init(x: 0.5, y: 0) + view.xs_endPoint = .init(x: 0.5, y: 1) + view.layer.cornerRadius = 12 + view.layer.masksToBounds = true + view.layer.borderWidth = 1 + view.layer.borderColor = UIColor.white.withAlphaComponent(0.25).cgColor return view }() + private lazy var coinsContainerView: UIView = { + let view = UIView() + return view + }() + + private lazy var coinsIconImageView = UIImageView(image: UIImage(named: "coins_icon_04")) + + private lazy var coinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 18, weight: .bold) + return label + }() + + private lazy var sendCoinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + label.textColor = .white.withAlphaComponent(0.5) + return label + }() + + private lazy var priceLabel: UILabel = { + let label = UILabel() + label.backgroundColor = .white + label.layer.cornerRadius = 12 + label.layer.masksToBounds = true + label.font = .font(ofSize: 14, weight: .bold) + label.textColor = ._2_A_2_A_2_A + label.textAlignment = .center + return label + }() + + private lazy var hotView = UIImageView(image: UIImage(named: "hot_icon_05")) + + private lazy var sendCoinsRatioView: UIView = { + let view = UIView() + view.backgroundColor = .white + view.layer.cornerRadius = 8 + view.layer.masksToBounds = true + view.layer.maskedCorners = .layerMinXMaxYCorner + return view + }() + + private lazy var sendCoinsRatioLabel: UILabel = { + let label = XSLabel() + label.font = .font(ofSize: 14, weight: .bold) + label.textColors = [UIColor._6900_CB.cgColor, UIColor.F_75_FFF.cgColor] + label.textStartPoint = .init(x: 0.5, y: 0) + label.textEndPoint = .init(x: 0.5, y: 1) + return label + }() + override init(frame: CGRect) { super.init(frame: frame) - - + xs_setupUI() } @MainActor required init?(coder: NSCoder) { @@ -27,3 +112,64 @@ class XSStoreCoinsBigCell: XSStoreCell { } } + +extension XSStoreCoinsBigCell { + + private func xs_setupUI() { + contentView.addSubview(bgView) + contentView.addSubview(coinsContainerView) + coinsContainerView.addSubview(coinsIconImageView) + coinsContainerView.addSubview(coinsLabel) + contentView.addSubview(sendCoinsLabel) + contentView.addSubview(priceLabel) + contentView.addSubview(hotView) + bgView.addSubview(sendCoinsRatioView) + sendCoinsRatioView.addSubview(sendCoinsRatioLabel) + + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + coinsContainerView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(14) + } + + coinsIconImageView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + } + + coinsLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(coinsIconImageView.snp.right).offset(5) + make.right.equalToSuperview() + } + + sendCoinsLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(coinsContainerView.snp.bottom).offset(6) + } + + priceLabel.snp.makeConstraints { make in + make.left.right.equalToSuperview().inset(6) + make.bottom.equalToSuperview().inset(6) + make.height.equalTo(24) + } + + hotView.snp.makeConstraints { make in + make.left.equalToSuperview() + make.top.equalToSuperview() + } + + sendCoinsRatioView.snp.makeConstraints { make in + make.top.right.equalToSuperview() + make.height.equalTo(18) + } + + sendCoinsRatioLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + make.left.equalToSuperview().offset(4) + } + } + +} diff --git a/XSeri/Class/Store/View/XSStoreCoinsSmallCell.swift b/XSeri/Class/Store/View/XSStoreCoinsSmallCell.swift index 26fea94..3452cd8 100644 --- a/XSeri/Class/Store/View/XSStoreCoinsSmallCell.swift +++ b/XSeri/Class/Store/View/XSStoreCoinsSmallCell.swift @@ -9,4 +9,162 @@ import UIKit class XSStoreCoinsSmallCell: XSStoreCell { + override var item: XSPayItem? { + didSet { + let coins = item?.coins ?? 0 + let sendCoins = item?.send_coins ?? 0 + + coinsLabel.text = "\(coins)" + + if sendCoins > 0 { + sendCoinsLabel.isHidden = false + sendCoinsRatioView.isHidden = false + + sendCoinsLabel.text = "+ \(sendCoins) " + "Bonus".localized + + let ratio = String(format: "%.0f", CGFloat(sendCoins) / CGFloat(coins) * 100) + sendCoinsRatioLabel.text = "+\(ratio)%" + } else { + sendCoinsLabel.isHidden = true + sendCoinsRatioView.isHidden = true + } + + priceLabel.text = "\(item?.currency ?? "")\(item?.price ?? "")" + if let make = item?.corner_marker, !make.isEmpty { + hotView.isHidden = false + } else { + hotView.isHidden = true + } + } + } + + private lazy var bgView: XSView = { + let view = XSView() + view.xs_colors = [UIColor._040_B_36.cgColor, UIColor._6_E_008_B.cgColor] + view.xs_startPoint = .init(x: 0.5, y: 0) + view.xs_endPoint = .init(x: 0.5, y: 1) + view.layer.cornerRadius = 12 + view.layer.masksToBounds = true + view.layer.borderWidth = 1 + view.layer.borderColor = UIColor.white.withAlphaComponent(0.25).cgColor + return view + }() + + private lazy var coinsContainerView: UIView = { + let view = UIView() + return view + }() + + private lazy var coinsIconImageView = UIImageView(image: UIImage(named: "coins_icon_04")) + + private lazy var coinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 18, weight: .bold) + return label + }() + + private lazy var sendCoinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 10, weight: .regular) + label.textColor = .white.withAlphaComponent(0.5) + return label + }() + + private lazy var priceLabel: UILabel = { + let label = UILabel() + label.backgroundColor = .D_567_F_1 + label.font = .font(ofSize: 12, weight: .bold) + label.textColor = .white + label.textAlignment = .center + return label + }() + + private lazy var hotView = UIImageView(image: UIImage(named: "hot_icon_05")) + + private lazy var sendCoinsRatioView: UIView = { + let view = UIView() + view.backgroundColor = .D_567_F_1 + view.layer.cornerRadius = 12 + view.layer.masksToBounds = true + view.layer.maskedCorners = .layerMinXMaxYCorner + return view + }() + + private lazy var sendCoinsRatioLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 14, weight: .bold) + label.textColor = .white + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + xs_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + +} + +extension XSStoreCoinsSmallCell { + + private func xs_setupUI() { + contentView.addSubview(bgView) + bgView.addSubview(coinsContainerView) + coinsContainerView.addSubview(coinsIconImageView) + coinsContainerView.addSubview(coinsLabel) + bgView.addSubview(sendCoinsLabel) + bgView.addSubview(priceLabel) + contentView.addSubview(hotView) + bgView.addSubview(sendCoinsRatioView) + sendCoinsRatioView.addSubview(sendCoinsRatioLabel) + + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + coinsContainerView.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalToSuperview().offset(25) + } + + coinsIconImageView.snp.makeConstraints { make in + make.left.top.bottom.equalToSuperview() + } + + coinsLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(coinsIconImageView.snp.right).offset(5) + make.right.equalToSuperview() + } + + sendCoinsLabel.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.top.equalTo(coinsContainerView.snp.bottom).offset(5) + } + + priceLabel.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.height.equalTo(24) + } + + hotView.snp.makeConstraints { make in + make.left.equalToSuperview().offset(1) + make.top.equalToSuperview().offset(-5) + } + + sendCoinsRatioView.snp.makeConstraints { make in + make.top.right.equalToSuperview() + make.height.equalTo(18) + } + + sendCoinsRatioLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + make.left.equalToSuperview().offset(4) + } + } + } diff --git a/XSeri/Class/Store/View/XSStoreCoinsSpreadCell.swift b/XSeri/Class/Store/View/XSStoreCoinsSpreadCell.swift index 2b5941c..770fdc3 100644 --- a/XSeri/Class/Store/View/XSStoreCoinsSpreadCell.swift +++ b/XSeri/Class/Store/View/XSStoreCoinsSpreadCell.swift @@ -6,7 +6,191 @@ // import UIKit +import SnapKit class XSStoreCoinsSpreadCell: XSStoreCell { + override var item: XSPayItem? { + didSet { + coinsLabel.text = "\(item?.ext_info?.max_total_coins ?? 0)" + + if let text = item?.ext_info?.receive_coins_rate, !text.isEmpty { + ratioLabel.text = text + ratioBgView.isHidden = false + } else { + ratioBgView.isHidden = true + } + + priceView.setNeedsUpdateConfiguration() + } + } + + private lazy var bgView: UIView = { + let view = UIImageView(image: UIImage(named: "spread_bg_image_01")) + view.layer.cornerRadius = 12 + view.layer.masksToBounds = true + return view + }() + + private lazy var bgCoinsView: UIImageView = { + let view = UIImageView(image: UIImage(named: "spread_bg_coins_01")) + return view + }() + + private lazy var titleLabel: UILabel = { + let label = XSLabel() + label.font = .font(ofSize: 16, weight: .bold).withBoldItalic() + label.textColors = [UIColor.BA_8_A_2_A.cgColor, UIColor._8_B_5801.cgColor] + label.textStartPoint = .init(x: 0, y: 0.5) + label.textEndPoint = .init(x: 1, y: 0.5) + label.text = "Weekly Refill".localized + return label + }() + + private lazy var coinsIconImageView = UIImageView(image: UIImage(named: "coins_icon_05")) + + private lazy var coinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 18, weight: .bold) + label.textColor = ._8_B_5801 + return label + }() + + private lazy var ratioBgView: UIView = { + let view = UIView() + view.backgroundColor = .black.withAlphaComponent(0.25) + view.layer.cornerRadius = 9 + view.layer.masksToBounds = true + return view + }() + + private lazy var ratioLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + label.textColor = .FFF_4_C_8 + return label + }() + + private lazy var priceView: UIButton = { + var config = UIButton.Configuration.plain() + config.background.backgroundColor = .white + config.titleAlignment = .center + config.titlePadding = 0 + config.contentInsets = .init(top: 0, leading: 10, bottom: 0, trailing: 10) + + let button = UIButton(configuration: config) + button.isUserInteractionEnabled = false + button.layer.masksToBounds = true + button.layer.cornerRadius = 24 + button.configurationUpdateHandler = { [weak self] button in + guard let self = self else { return } + + let currency = self.item?.currency ?? "" + let timeText = self.item?.getTimeString() ?? "" + let oldPrice = self.item?.price ?? "" + var discountPrice: String? = self.item?.discount_price + + if let discountPrice = discountPrice { + + let priceString = AttributedString("\(currency)\(discountPrice)", attributes: AttributeContainer([ + .font : UIFont.font(ofSize: 18, weight: .bold), + .foregroundColor : UIColor._946_A_37 + ])) + + + button.configuration?.attributedTitle = priceString + + var subtitle = AttributedString("\(currency)\(oldPrice)", attributes: AttributeContainer([ + .font : UIFont.font(ofSize: 12, weight: .regular), + .foregroundColor : UIColor.black.withAlphaComponent(0.05), + .strikethroughStyle: NSUnderlineStyle.double.rawValue, + .strikethroughColor: UIColor.black.withAlphaComponent(0.05) + ])) + + button.configuration?.attributedSubtitle = subtitle + + } else { + + button.configuration?.attributedTitle = AttributedString("\(currency)\(oldPrice)", attributes: AttributeContainer([ + .font : UIFont.font(ofSize: 18, weight: .bold), + .foregroundColor : UIColor._946_A_37 + ])) + + button.configuration?.attributedSubtitle = AttributedString("/\(timeText)", attributes: AttributeContainer([ + .font : UIFont.font(ofSize: 12, weight: .regular), + .foregroundColor : UIColor.black.withAlphaComponent(0.5) + ])) + } + + } + + return button + }() + + + override init(frame: CGRect) { + super.init(frame: frame) + + xs_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension XSStoreCoinsSpreadCell { + + private func xs_setupUI() { + contentView.addSubview(bgView) + bgView.addSubview(bgCoinsView) + bgView.addSubview(titleLabel) + bgView.addSubview(coinsIconImageView) + bgView.addSubview(coinsLabel) + bgView.addSubview(ratioBgView) + ratioBgView.addSubview(ratioLabel) + bgView.addSubview(priceView) + + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + bgCoinsView.snp.makeConstraints { make in + make.left.bottom.equalToSuperview() + } + + titleLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(72) + make.top.equalToSuperview().offset(19) + } + + coinsIconImageView.snp.makeConstraints { make in + make.left.equalTo(titleLabel) + make.bottom.equalToSuperview().inset(21) + } + + coinsLabel.snp.makeConstraints { make in + make.centerY.equalTo(coinsIconImageView) + make.left.equalTo(coinsIconImageView.snp.right).offset(4) + } + + ratioBgView.snp.makeConstraints { make in + make.centerY.equalTo(coinsIconImageView) + make.left.equalTo(coinsLabel.snp.right).offset(4) + make.height.equalTo(18) + } + + ratioLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + make.left.equalToSuperview().offset(8) + } + + priceView.snp.makeConstraints { make in + make.right.equalToSuperview().offset(-12) + make.centerY.equalToSuperview() + make.height.equalTo(48) + make.width.greaterThanOrEqualTo(88) + } + } + } diff --git a/XSeri/Class/Store/View/XSStoreCoinsView.swift b/XSeri/Class/Store/View/XSStoreCoinsView.swift index 0ec3dc3..2d26474 100644 --- a/XSeri/Class/Store/View/XSStoreCoinsView.swift +++ b/XSeri/Class/Store/View/XSStoreCoinsView.swift @@ -126,6 +126,7 @@ extension XSStoreCoinsView { collectionView.snp.makeConstraints { make in make.top.equalToSuperview().offset(36) make.left.right.equalToSuperview().inset(16) + make.bottom.equalToSuperview() make.height.equalTo(1) } } @@ -150,13 +151,16 @@ extension XSStoreCoinsView { } private func smallLayoutSection(_ environment: NSCollectionLayoutEnvironment) -> NSCollectionLayoutSection { - let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(1 / 3), heightDimension: .fractionalHeight(1))) + let contentWidth = environment.container.effectiveContentSize.width + let itemWidth = floor((contentWidth - 30) / 3) + + let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(itemWidth), heightDimension: .fractionalHeight(1))) - let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(121)), subitems: [item]) - group.interItemSpacing = .fixed(8) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(84)), subitems: [item]) + group.interItemSpacing = .fixed(15) let layoutSection = NSCollectionLayoutSection(group: group) - layoutSection.interGroupSpacing = 10 + layoutSection.interGroupSpacing = 12 layoutSection.contentInsets = .zero return layoutSection } @@ -168,7 +172,7 @@ extension XSStoreCoinsView { let layoutSection = NSCollectionLayoutSection(group: group) - layoutSection.interGroupSpacing = 10 + layoutSection.interGroupSpacing = 12 layoutSection.contentInsets = .zero return layoutSection } @@ -179,7 +183,7 @@ extension XSStoreCoinsView: UICollectionViewDelegate, UICollectionViewDataSource func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let item = dataArr[indexPath.section][indexPath.row] - var identifier = item.size?.rawValue ?? "" + let identifier = item.size?.rawValue ?? "" let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath) as! XSStoreCell cell.item = item cell.xs_isSelected = selectedIndexPath == indexPath @@ -199,7 +203,7 @@ extension XSStoreCoinsView: UICollectionViewDelegate, UICollectionViewDataSource self.selectedIndexPath = indexPath collectionView.reloadData() -// if model.buy_type == .subCoins { + if model.buy_type == .subCoins { // let view = FACoinPackConfirmView() // view.shortPlayId = self.shortPlayId // view.videoId = self.videoId @@ -210,15 +214,17 @@ extension XSStoreCoinsView: UICollectionViewDelegate, UICollectionViewDataSource // self.buyFinishHandle?() // } // view.present(in: nil) -// } else { -// FAIapManager.manager.start(model: model, shortPlayId: self.shortPlayId, videoId: self.videoId) { [weak self] finish in -// guard let self = self else { return } -// if finish { -// FALogin.manager.requestUserInfo(completer: nil) -// self.buyFinishHandle?() -// } -// } -// } + } else { + XSIapManager.manager.start(model: model, shortPlayId: self.shortPlayId, videoId: self.videoId) { [weak self] finish in + guard let self = self else { return } + if finish { + Task { + await XSLoginManager.manager.updateUserInfo() + } + self.buyFinishHandle?() + } + } + } } diff --git a/XSeri/Class/Store/View/XSStoreVipCell.swift b/XSeri/Class/Store/View/XSStoreVipCell.swift index 57b3a35..ec30f50 100644 --- a/XSeri/Class/Store/View/XSStoreVipCell.swift +++ b/XSeri/Class/Store/View/XSStoreVipCell.swift @@ -6,7 +6,245 @@ // import UIKit +import SnapKit class XSStoreVipCell: XSStoreCell { + override var item: XSPayItem? { + didSet { + titleLabel.text = item?.getVipTitle() + expiresLabel.text = item?.xs_description + + + + switch item?.vip_type_key { + case .week: + bgView.image = UIImage(named: "store_vip_week_bg_image") + bgView.layer.borderColor = UIColor.FFDAA_4.cgColor + bgDiamondView.image = UIImage(named: "store_vip_week_diamond_image") + titleBgView.xs_colors = [UIColor.white.cgColor, UIColor.white.cgColor, UIColor.white.cgColor] + titleIconView.image = UIImage(named: "store_vip_title_week_icon") + titleLabel.textColor = ._523927 + priceLabel.textColor = ._4_A_1341 + timeLabel.textColor = ._4_C_0053 + sendCoinsBgView.xs_colors = [UIColor.FF_7373.cgColor, UIColor.F_770_E_8.cgColor, UIColor.DF_84_FF.cgColor] + sendCoinsLabel.textColor = .white + + case .month: + bgView.image = UIImage(named: "store_vip_month_bg_image") + bgView.layer.borderColor = UIColor.FFDAA_4.cgColor + bgDiamondView.image = UIImage(named: "store_vip_month_diamond_image") + titleBgView.xs_colors = [UIColor.white.cgColor, UIColor.white.cgColor, UIColor.white.cgColor] + titleIconView.image = UIImage(named: "store_vip_title_month_icon") + titleLabel.textColor = ._523927 + priceLabel.textColor = ._4_A_1913 + timeLabel.textColor = ._530000 + sendCoinsBgView.xs_colors = [UIColor.FF_7373.cgColor, UIColor.F_770_E_8.cgColor, UIColor.DF_84_FF.cgColor] + sendCoinsLabel.textColor = .white + + case .quarter: + bgView.image = UIImage(named: "store_vip_quarter_bg_image") + bgView.layer.borderColor = UIColor.FFDAA_4.cgColor + bgDiamondView.image = UIImage(named: "store_vip_quarter_diamond_image") + titleBgView.xs_colors = [UIColor.white.cgColor, UIColor.white.cgColor, UIColor.white.cgColor] + titleIconView.image = UIImage(named: "store_vip_title_quarter_icon") + titleLabel.textColor = ._523927 + priceLabel.textColor = ._523927 + timeLabel.textColor = ._523927 + sendCoinsBgView.xs_colors = [UIColor.FF_7373.cgColor, UIColor.F_770_E_8.cgColor, UIColor.DF_84_FF.cgColor] + sendCoinsLabel.textColor = .white + + case .year: + bgView.image = UIImage(named: "store_vip_year_bg_image") + bgView.layer.borderColor = UIColor._80776_A.cgColor + bgDiamondView.image = UIImage(named: "store_vip_year_diamond_image") + titleBgView.xs_colors = [UIColor.FFC_445.cgColor, UIColor.FFF_2_A_8.cgColor, UIColor.FFC_94_B.cgColor] + titleIconView.image = UIImage(named: "store_vip_title_year_icon") + titleLabel.textColor = ._492_D_2_A + priceLabel.textColor = .FFD_2_AA + timeLabel.textColor = .FFD_2_AA + sendCoinsBgView.xs_colors = [UIColor.FFC_445.cgColor, UIColor.FFF_2_A_8.cgColor, UIColor.FFC_94_B.cgColor] + sendCoinsLabel.textColor = ._523927 + + default: + break + } + expiresLabel.textColor = timeLabel.textColor + + let currency = item?.currency ?? "" + let oldPrice = item?.price ?? "" + let time = "/\(item?.getTimeString() ?? "")" + let offerPrice = item?.discount_price + + if let price = offerPrice { + priceLabel.text = currency + " " + price + + let oldPriceStr = NSMutableAttributedString(string: oldPrice) + oldPriceStr.yy_strikethroughColor = timeLabel.textColor + oldPriceStr.yy_strikethroughStyle = .double + timeLabel.attributedText = oldPriceStr + } else { + priceLabel.text = currency + " " + oldPrice + + let timeStr = NSMutableAttributedString(string: time) + timeLabel.attributedText = timeStr + } + + + if let coins = item?.send_coins, coins > 0 { + sendCoinsBgView.isHidden = false + sendCoinsLabel.text = "+ Extra ## Bonus".localizedReplace(text: "\(coins)") + } else { + sendCoinsBgView.isHidden = true + } + + + } + } + + + private lazy var bgView: UIImageView = { + let view = UIImageView() + view.layer.cornerRadius = 12 + view.layer.masksToBounds = true + view.layer.borderWidth = 1 + return view + }() + + private lazy var bgDiamondView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private lazy var titleBgView: XSView = { + let view = XSView() + view.layer.cornerRadius = 18 + view.layer.masksToBounds = true + view.layer.maskedCorners = .layerMaxXMaxYCorner + view.xs_startPoint = .init(x: 0, y: 0.5) + view.xs_endPoint = .init(x: 1, y: 0.5) + return view + }() + + private lazy var titleIconView: UIImageView = { + let imageView = UIImageView() + return imageView + }() + + private lazy var titleLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 14, weight: .bold) + return label + }() + + private lazy var priceLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 22, weight: .semibold) + return label + }() + + private lazy var timeLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .regular) + return label + }() + + private lazy var expiresLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 10, weight: .regular).withBoldItalic() + return label + }() + + private lazy var sendCoinsBgView: XSView = { + let view = XSView() + view.xs_startPoint = .init(x: 0, y: 0.5) + view.xs_endPoint = .init(x: 1, y: 0.5) + view.layer.cornerRadius = 9 + view.layer.masksToBounds = true + view.layer.maskedCorners = [.layerMinXMinYCorner, .layerMinXMaxYCorner] + return view + }() + + private lazy var sendCoinsLabel: UILabel = { + let label = UILabel() + label.font = .font(ofSize: 12, weight: .bold).withBoldItalic() + return label + }() + + override init(frame: CGRect) { + super.init(frame: frame) + + xs_setupUI() + } + + @MainActor required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } +} + +extension XSStoreVipCell { + + private func xs_setupUI() { + contentView.addSubview(bgView) + bgView.addSubview(bgDiamondView) + bgView.addSubview(titleBgView) + titleBgView.addSubview(titleIconView) + titleBgView.addSubview(titleLabel) + bgView.addSubview(priceLabel) + bgView.addSubview(timeLabel) + bgView.addSubview(expiresLabel) + bgView.addSubview(sendCoinsBgView) + sendCoinsBgView.addSubview(sendCoinsLabel) + + bgView.snp.makeConstraints { make in + make.edges.equalToSuperview() + } + + bgDiamondView.snp.makeConstraints { make in + make.right.equalToSuperview().inset(29) + make.top.equalToSuperview().inset(8) + } + + titleBgView.snp.makeConstraints { make in + make.left.top.equalToSuperview() + make.height.equalTo(24) + } + + titleIconView.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().offset(12) + } + + titleLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalTo(titleIconView.snp.right).offset(4) + make.right.equalToSuperview().offset(-12) + } + + priceLabel.snp.makeConstraints { make in + make.left.equalToSuperview().offset(17) + make.centerY.equalToSuperview() + } + + timeLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview().offset(1) + make.left.equalTo(priceLabel.snp.right).offset(6) + } + + expiresLabel.snp.makeConstraints { make in + make.left.equalTo(priceLabel) + make.bottom.equalToSuperview().offset(-10) + } + + sendCoinsBgView.snp.makeConstraints { make in + make.right.top.equalToSuperview() + make.height.equalTo(18) + } + + sendCoinsLabel.snp.makeConstraints { make in + make.center.equalToSuperview() + make.left.equalToSuperview().offset(6) + } + } + } diff --git a/XSeri/Class/Store/View/XSStoreVipView.swift b/XSeri/Class/Store/View/XSStoreVipView.swift index 2921c44..f7de1ba 100644 --- a/XSeri/Class/Store/View/XSStoreVipView.swift +++ b/XSeri/Class/Store/View/XSStoreVipView.swift @@ -41,10 +41,10 @@ class XSStoreVipView: UIView { let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .fractionalHeight(1))) - let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(110)), subitems: [item]) + let group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(84)), subitems: [item]) let layoutSection = NSCollectionLayoutSection(group: group) - layoutSection.interGroupSpacing = 14 + layoutSection.interGroupSpacing = 12 layoutSection.contentInsets = .init(top: 0, leading: 16, bottom: 0, trailing: 16) @@ -133,13 +133,15 @@ extension XSStoreVipView: UICollectionViewDelegate, UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { let model = self.dataArr[indexPath.row] -// FAIapManager.manager.start(model: model, shortPlayId: self.shortPlayId, videoId: self.videoId) { [weak self] finish in -// guard let self = self else { return } -// if finish { -// FALogin.manager.requestUserInfo(completer: nil) -// self.buyFinishHandle?() -// } -// } + XSIapManager.manager.start(model: model, shortPlayId: self.shortPlayId, videoId: self.videoId) { [weak self] finish in + guard let self = self else { return } + if finish { + Task { + await XSLoginManager.manager.updateUserInfo() + } + self.buyFinishHandle?() + } + } } } diff --git a/XSeri/Libs/IapManager/XSPayDataRequest.swift b/XSeri/Libs/IapManager/XSPayDataRequest.swift index c00ea1a..ba1544a 100644 --- a/XSeri/Libs/IapManager/XSPayDataRequest.swift +++ b/XSeri/Libs/IapManager/XSPayDataRequest.swift @@ -97,36 +97,36 @@ extension XSPayDataRequest: SKProductsRequestDelegate { var newCoinList: [XSPayItem] = [] var newVipList: [XSPayItem] = [] - templateModel.list_coins?.forEach { item in - let productId = XSIapManager.manager.getProductId(templateId: item.ios_template_id) ?? "" - for product in products { - if productId == product.productIdentifier { - item.price = product.price.stringValue - item.currency = product.priceLocale.currencySymbol - item.product = product - newCoinList.append(item) - break - } - } - } - - templateModel.list_sub_vip?.forEach { item in - let productId = XSIapManager.manager.getProductId(templateId: item.ios_template_id) ?? "" - for product in products { - if productId == product.productIdentifier { - item.price = product.price.stringValue - item.currency = product.priceLocale.currencySymbol - item.product = product - newVipList.append(item) - break - } - } - } +// templateModel.list_coins?.forEach { item in +// let productId = XSIapManager.manager.getProductId(templateId: item.ios_template_id) ?? "" +// for product in products { +// if productId == product.productIdentifier { +// item.price = product.price.stringValue +// item.currency = product.priceLocale.currencySymbol +// item.product = product +// newCoinList.append(item) +// break +// } +// } +// } +// +// templateModel.list_sub_vip?.forEach { item in +// let productId = XSIapManager.manager.getProductId(templateId: item.ios_template_id) ?? "" +// for product in products { +// if productId == product.productIdentifier { +// item.price = product.price.stringValue +// item.currency = product.priceLocale.currencySymbol +// item.product = product +// newVipList.append(item) +// break +// } +// } +// } - templateModel.list_coins = newCoinList - templateModel.list_sub_vip = newVipList +// templateModel.list_coins = newCoinList +// templateModel.list_sub_vip = newVipList if let block = self.completerBlock { diff --git a/XSeri/Source/Assets.xcassets/Color/#040B36.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#040B36.colorset/Contents.json new file mode 100644 index 0000000..a31e0df --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#040B36.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x36", + "green" : "0x0B", + "red" : "0x04" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#2A2A2A.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#2A2A2A.colorset/Contents.json new file mode 100644 index 0000000..0526811 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#2A2A2A.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2A", + "green" : "0x2A", + "red" : "0x2A" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#492D2A.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#492D2A.colorset/Contents.json new file mode 100644 index 0000000..625f2c4 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#492D2A.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2A", + "green" : "0x2D", + "red" : "0x49" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#4A1341.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#4A1341.colorset/Contents.json new file mode 100644 index 0000000..eb734e7 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#4A1341.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x41", + "green" : "0x13", + "red" : "0x4A" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#4A1913.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#4A1913.colorset/Contents.json new file mode 100644 index 0000000..02e8b0a --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#4A1913.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x13", + "green" : "0x19", + "red" : "0x4A" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#4C0053.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#4C0053.colorset/Contents.json new file mode 100644 index 0000000..444d2fa --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#4C0053.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x53", + "green" : "0x00", + "red" : "0x4C" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#530000.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#530000.colorset/Contents.json new file mode 100644 index 0000000..3b43480 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#530000.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x00", + "green" : "0x00", + "red" : "0x53" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#6900CB.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#6900CB.colorset/Contents.json new file mode 100644 index 0000000..d87446e --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#6900CB.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xCB", + "green" : "0x00", + "red" : "0x69" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#6E008B.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#6E008B.colorset/Contents.json new file mode 100644 index 0000000..5037e42 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#6E008B.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x8B", + "green" : "0x00", + "red" : "0x6E" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#703BDE.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#703BDE.colorset/Contents.json new file mode 100644 index 0000000..5fccf5d --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#703BDE.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xDE", + "green" : "0x3B", + "red" : "0x70" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#80776A.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#80776A.colorset/Contents.json new file mode 100644 index 0000000..294c166 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#80776A.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x6A", + "green" : "0x77", + "red" : "0x80" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#8B5801.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#8B5801.colorset/Contents.json new file mode 100644 index 0000000..0ac4c43 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#8B5801.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x01", + "green" : "0x58", + "red" : "0x8B" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#946A37.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#946A37.colorset/Contents.json new file mode 100644 index 0000000..99c2474 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#946A37.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x37", + "green" : "0x6A", + "red" : "0x94" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#BA8A2A.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#BA8A2A.colorset/Contents.json new file mode 100644 index 0000000..7bbd325 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#BA8A2A.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x2A", + "green" : "0x8A", + "red" : "0xBA" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#D567F1.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#D567F1.colorset/Contents.json new file mode 100644 index 0000000..c569df4 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#D567F1.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xF1", + "green" : "0x67", + "red" : "0xD5" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#DF84FF.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#DF84FF.colorset/Contents.json new file mode 100644 index 0000000..5c2b0f7 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#DF84FF.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0x84", + "red" : "0xDF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#F75FFF.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#F75FFF.colorset/Contents.json new file mode 100644 index 0000000..d84eb71 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#F75FFF.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xFF", + "green" : "0x5F", + "red" : "0xF7" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#F770E8.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#F770E8.colorset/Contents.json new file mode 100644 index 0000000..071c677 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#F770E8.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xE8", + "green" : "0x70", + "red" : "0xF7" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FF7373.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FF7373.colorset/Contents.json new file mode 100644 index 0000000..5ddab60 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FF7373.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x73", + "green" : "0x73", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FFC445.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FFC445.colorset/Contents.json new file mode 100644 index 0000000..2c96576 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FFC445.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x45", + "green" : "0xC4", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FFC94B.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FFC94B.colorset/Contents.json new file mode 100644 index 0000000..fe7bb20 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FFC94B.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0x4B", + "green" : "0xC9", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FFD2AA.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FFD2AA.colorset/Contents.json new file mode 100644 index 0000000..74f03b7 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FFD2AA.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xAA", + "green" : "0xD2", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FFF2A8.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FFF2A8.colorset/Contents.json new file mode 100644 index 0000000..7644b33 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FFF2A8.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xA8", + "green" : "0xF2", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Color/#FFF4C8.colorset/Contents.json b/XSeri/Source/Assets.xcassets/Color/#FFF4C8.colorset/Contents.json new file mode 100644 index 0000000..8a6a9f6 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Color/#FFF4C8.colorset/Contents.json @@ -0,0 +1,20 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0xC8", + "green" : "0xF4", + "red" : "0xFF" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/Contents.json new file mode 100644 index 0000000..014d81b --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "新APP金币@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "新APP金币@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@2x.png new file mode 100644 index 0000000..93a348f Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@3x.png new file mode 100644 index 0000000..6a17cea Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/Contents.json new file mode 100644 index 0000000..6974814 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.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/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@2x.png new file mode 100644 index 0000000..980e808 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@3x.png new file mode 100644 index 0000000..77c9e99 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/Contents.json new file mode 100644 index 0000000..04e65db --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.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/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@2x.png new file mode 100644 index 0000000..1f8b572 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@3x.png new file mode 100644 index 0000000..b5f55dd Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/Contents.json new file mode 100644 index 0000000..36577cc --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@2x.png new file mode 100644 index 0000000..7a821ea Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@3x.png new file mode 100644 index 0000000..b1f4e95 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Contents.json new file mode 100644 index 0000000..92f33e0 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Rectangle 64989@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Rectangle 64989@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@2x.png new file mode 100644 index 0000000..8575bd3 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@3x.png new file mode 100644 index 0000000..7423e7e Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/Contents.json new file mode 100644 index 0000000..4ee42b1 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "花瓣素材_emoji热门HOT火焰图形贴纸_193856377@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "花瓣素材_emoji热门HOT火焰图形贴纸_193856377@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@2x.png new file mode 100644 index 0000000..b0b6052 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@3x.png new file mode 100644 index 0000000..fcea28a Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@2x.png new file mode 100644 index 0000000..3b08d30 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@3x.png new file mode 100644 index 0000000..f598fc2 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/Contents.json new file mode 100644 index 0000000..29c8999 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "1.金币-样式-切图@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "1.金币-样式-切图@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/Contents.json new file mode 100644 index 0000000..209e3e1 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "金币订阅包-bg@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "金币订阅包-bg@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@2x.png new file mode 100644 index 0000000..7213c2a Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@3x.png new file mode 100644 index 0000000..d603c1c Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/Contents.json new file mode 100644 index 0000000..f5d96d6 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@2x.png new file mode 100644 index 0000000..bf0e734 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@3x.png new file mode 100644 index 0000000..064797c Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/Contents.json new file mode 100644 index 0000000..55a2c5d --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@2x.png new file mode 100644 index 0000000..8fea5dd Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@3x.png new file mode 100644 index 0000000..d575467 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/Contents.json new file mode 100644 index 0000000..afc2334 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@2x.png new file mode 100644 index 0000000..b081178 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@3x.png new file mode 100644 index 0000000..b1a6a46 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/Contents.json new file mode 100644 index 0000000..4f129bf --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@2x.png new file mode 100644 index 0000000..8dba025 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@3x.png new file mode 100644 index 0000000..5dd6901 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/Contents.json new file mode 100644 index 0000000..0a27dc5 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "V标@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "V标@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@2x.png new file mode 100644 index 0000000..07a5230 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@3x.png new file mode 100644 index 0000000..f17a45a Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/Contents.json new file mode 100644 index 0000000..0a27dc5 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "V标@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "V标@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@2x.png new file mode 100644 index 0000000..284780e Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@3x.png new file mode 100644 index 0000000..83d0822 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/Contents.json new file mode 100644 index 0000000..0a27dc5 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "V标@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "V标@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@2x.png new file mode 100644 index 0000000..2a3e347 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@3x.png new file mode 100644 index 0000000..1d9974c Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/Contents.json new file mode 100644 index 0000000..0a27dc5 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "V标@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "V标@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@2x.png new file mode 100644 index 0000000..684a75b Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@3x.png new file mode 100644 index 0000000..68e5a48 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/Contents.json new file mode 100644 index 0000000..45b4193 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@2x.png new file mode 100644 index 0000000..b08b8ce Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@3x.png new file mode 100644 index 0000000..12ed146 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/Contents.json new file mode 100644 index 0000000..77eecb2 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@2x.png new file mode 100644 index 0000000..6260b50 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@3x.png new file mode 100644 index 0000000..b3955ff Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/Contents.json new file mode 100644 index 0000000..ed62c58 --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@2x.png new file mode 100644 index 0000000..342d406 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@3x.png new file mode 100644 index 0000000..f3222d9 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@3x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/Contents.json b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/Contents.json new file mode 100644 index 0000000..86a300f --- /dev/null +++ b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.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/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@2x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@2x.png new file mode 100644 index 0000000..cbfe25c Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@2x.png differ diff --git a/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@3x.png b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@3x.png new file mode 100644 index 0000000..f5da785 Binary files /dev/null and b/XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@3x.png differ diff --git a/XSeri/Source/en.lproj/Localizable.strings b/XSeri/Source/en.lproj/Localizable.strings index 2cf1419..0cfff68 100644 --- a/XSeri/Source/en.lproj/Localizable.strings +++ b/XSeri/Source/en.lproj/Localizable.strings @@ -63,6 +63,17 @@ "VIP Membership" = "VIP Membership"; "Auto renew,cancel anytime" = "Auto renew,cancel anytime"; "Daily Coins" = "Daily Coins"; +"Weekly Refill" = "Weekly Refill"; +"week" = "week"; +"month" = "month"; +"quarter" = "quarter"; +"year" = "year"; +"Weekly VIP" = "Weekly VIP"; +"Monthly VIP" = "Monthly VIP"; +"Quarterly VIP" = "Quarterly VIP"; +"Yearly VIP" = "Yearly VIP"; +"+ Extra ## Bonus" = "+ Extra ## Bonus"; +"My Refills" = "My Refills"; "me_daily_1" = "Daily reward ready!"; "me_daily_2" = "Claim your rewards now.";