1
@ -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<XSPayDateModel> = await XSNetwork.request(parameters: param)
|
||||
return response.data
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
|
||||
@ -22,4 +38,30 @@ class XSCoinsPackViewController: XSViewController {
|
||||
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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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 group = NSCollectionLayoutGroup.horizontal(layoutSize: .init(widthDimension: .fractionalWidth(1), heightDimension: .absolute(121)), subitems: [item])
|
||||
group.interItemSpacing = .fixed(8)
|
||||
let item = NSCollectionLayoutItem(layoutSize: .init(widthDimension: .absolute(itemWidth), heightDimension: .fractionalHeight(1)))
|
||||
|
||||
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?()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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?()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
@ -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
|
||||
}
|
||||
}
|
||||
22
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_04.imageset/新APP金币@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_icon_05.imageset/金币@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 758 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_01.imageset/背景-金币签到页@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.5 MiB |
22
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 387 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/coins_pack_bg_02.imageset/bg@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 628 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/gradient_color_image_03.imageset/Rectangle 64989@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 86 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/hot_icon_05.imageset/花瓣素材_emoji热门HOT火焰图形贴纸_193856377@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/1.金币-样式-切图@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 72 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_coins_01.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
22
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/spread_bg_image_01.imageset/金币订阅包-bg@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 223 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_bg_image.imageset/月-卡片@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 242 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_month_diamond_image.imageset/月@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 48 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 115 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_bg_image.imageset/季-卡片@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 244 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_quarter_diamond_image.imageset/季@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 49 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_month_icon.imageset/V标@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_quarter_icon.imageset/V标@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_week_icon.imageset/V标@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_title_year_icon.imageset/V标@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_bg_image.imageset/周-卡片@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 229 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_week_diamond_image.imageset/周@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 52 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 175 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_bg_image.imageset/年-卡片@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 368 KiB |
22
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/Contents.json
vendored
Normal file
@ -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
|
||||
}
|
||||
}
|
||||
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
XSeri/Source/Assets.xcassets/Image/icon/store_vip_year_diamond_image.imageset/年@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 56 KiB |
@ -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.";
|
||||
|
||||