vip弹窗修改样式
@ -148,6 +148,7 @@
|
|||||||
BF5E75DB2DE5B8B700DE9DFE /* VPMarqueeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75DA2DE5B8B700DE9DFE /* VPMarqueeView.swift */; };
|
BF5E75DB2DE5B8B700DE9DFE /* VPMarqueeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E75DA2DE5B8B700DE9DFE /* VPMarqueeView.swift */; };
|
||||||
BF692AB52E0644B500A5C2DA /* VPRevolutionSelectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AB42E0644B500A5C2DA /* VPRevolutionSelectedView.swift */; };
|
BF692AB52E0644B500A5C2DA /* VPRevolutionSelectedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AB42E0644B500A5C2DA /* VPRevolutionSelectedView.swift */; };
|
||||||
BF692AB72E06450C00A5C2DA /* VPRevolutionSelectedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AB62E06450C00A5C2DA /* VPRevolutionSelectedCell.swift */; };
|
BF692AB72E06450C00A5C2DA /* VPRevolutionSelectedCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AB62E06450C00A5C2DA /* VPRevolutionSelectedCell.swift */; };
|
||||||
|
BF692AB92E065B2100A5C2DA /* VPVipAlertItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF692AB82E065B2100A5C2DA /* VPVipAlertItemView.swift */; };
|
||||||
BFA21D982E01477200B3573D /* VPStoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D972E01477200B3573D /* VPStoreViewController.swift */; };
|
BFA21D982E01477200B3573D /* VPStoreViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D972E01477200B3573D /* VPStoreViewController.swift */; };
|
||||||
BFA21D9A2E01497F00B3573D /* VPStoreVipBuyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D992E01497F00B3573D /* VPStoreVipBuyView.swift */; };
|
BFA21D9A2E01497F00B3573D /* VPStoreVipBuyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D992E01497F00B3573D /* VPStoreVipBuyView.swift */; };
|
||||||
BFA21D9C2E01628F00B3573D /* VPStoreCoinsBuyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D9B2E01628F00B3573D /* VPStoreCoinsBuyView.swift */; };
|
BFA21D9C2E01628F00B3573D /* VPStoreCoinsBuyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFA21D9B2E01628F00B3573D /* VPStoreCoinsBuyView.swift */; };
|
||||||
@ -422,6 +423,7 @@
|
|||||||
BF5E75DA2DE5B8B700DE9DFE /* VPMarqueeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMarqueeView.swift; sourceTree = "<group>"; };
|
BF5E75DA2DE5B8B700DE9DFE /* VPMarqueeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPMarqueeView.swift; sourceTree = "<group>"; };
|
||||||
BF692AB42E0644B500A5C2DA /* VPRevolutionSelectedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPRevolutionSelectedView.swift; sourceTree = "<group>"; };
|
BF692AB42E0644B500A5C2DA /* VPRevolutionSelectedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPRevolutionSelectedView.swift; sourceTree = "<group>"; };
|
||||||
BF692AB62E06450C00A5C2DA /* VPRevolutionSelectedCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPRevolutionSelectedCell.swift; sourceTree = "<group>"; };
|
BF692AB62E06450C00A5C2DA /* VPRevolutionSelectedCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPRevolutionSelectedCell.swift; sourceTree = "<group>"; };
|
||||||
|
BF692AB82E065B2100A5C2DA /* VPVipAlertItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPVipAlertItemView.swift; sourceTree = "<group>"; };
|
||||||
BFA21D972E01477200B3573D /* VPStoreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreViewController.swift; sourceTree = "<group>"; };
|
BFA21D972E01477200B3573D /* VPStoreViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreViewController.swift; sourceTree = "<group>"; };
|
||||||
BFA21D992E01497F00B3573D /* VPStoreVipBuyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreVipBuyView.swift; sourceTree = "<group>"; };
|
BFA21D992E01497F00B3573D /* VPStoreVipBuyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreVipBuyView.swift; sourceTree = "<group>"; };
|
||||||
BFA21D9B2E01628F00B3573D /* VPStoreCoinsBuyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreCoinsBuyView.swift; sourceTree = "<group>"; };
|
BFA21D9B2E01628F00B3573D /* VPStoreCoinsBuyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VPStoreCoinsBuyView.swift; sourceTree = "<group>"; };
|
||||||
@ -1129,6 +1131,7 @@
|
|||||||
BFF5B2312DEFF1220044227A /* VPDeleteAccountDetailView.swift */,
|
BFF5B2312DEFF1220044227A /* VPDeleteAccountDetailView.swift */,
|
||||||
BFF5B2332DEFF2030044227A /* VPDeleteAccountTipView.swift */,
|
BFF5B2332DEFF2030044227A /* VPDeleteAccountTipView.swift */,
|
||||||
BFCCE1112DF9638B00EDE165 /* VPVipAlertView.swift */,
|
BFCCE1112DF9638B00EDE165 /* VPVipAlertView.swift */,
|
||||||
|
BF692AB82E065B2100A5C2DA /* VPVipAlertItemView.swift */,
|
||||||
BFCCE1152DFAB66F00EDE165 /* VPLanguageCell.swift */,
|
BFCCE1152DFAB66F00EDE165 /* VPLanguageCell.swift */,
|
||||||
);
|
);
|
||||||
path = View;
|
path = View;
|
||||||
@ -1546,6 +1549,7 @@
|
|||||||
1B056E6C2DDADAA1007EE38D /* VPTabBar.swift in Sources */,
|
1B056E6C2DDADAA1007EE38D /* VPTabBar.swift in Sources */,
|
||||||
BF0FA72E2DDD7DD400C9E5F2 /* VPHomeRankingCell.swift in Sources */,
|
BF0FA72E2DDD7DD400C9E5F2 /* VPHomeRankingCell.swift in Sources */,
|
||||||
BF0FA7792DE075FF00C9E5F2 /* VPSearchHomeView.swift in Sources */,
|
BF0FA7792DE075FF00C9E5F2 /* VPSearchHomeView.swift in Sources */,
|
||||||
|
BF692AB92E065B2100A5C2DA /* VPVipAlertItemView.swift in Sources */,
|
||||||
BF0FA7302DDEBB1600C9E5F2 /* UIButton+VPAdd.swift in Sources */,
|
BF0FA7302DDEBB1600C9E5F2 /* UIButton+VPAdd.swift in Sources */,
|
||||||
BF0FA74C2DDF060200C9E5F2 /* VPVideoPlayerViewController.swift in Sources */,
|
BF0FA74C2DDF060200C9E5F2 /* VPVideoPlayerViewController.swift in Sources */,
|
||||||
BF0FA79B2DE1984B00C9E5F2 /* VPCollectListViewController.swift in Sources */,
|
BF0FA79B2DE1984B00C9E5F2 /* VPCollectListViewController.swift in Sources */,
|
||||||
|
@ -27,6 +27,16 @@ class VPWebViewController: VPViewController {
|
|||||||
webView.delegate = self
|
webView.delegate = self
|
||||||
return webView
|
return webView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
private lazy var emptyView: VPEmptyView = {
|
||||||
|
let view = VPEmptyView.createNoNetworkEmptyView { [weak self] in
|
||||||
|
guard let self = self else { return }
|
||||||
|
if let url = self.urlStr {
|
||||||
|
self.load(urlString: url)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return view
|
||||||
|
}()
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
super.viewDidLoad()
|
super.viewDidLoad()
|
||||||
@ -79,6 +89,8 @@ extension VPWebViewController {
|
|||||||
extension VPWebViewController: VPWebViewDelegate {
|
extension VPWebViewController: VPWebViewDelegate {
|
||||||
|
|
||||||
func webView(_ webView: VPWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool {
|
func webView(_ webView: VPWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool {
|
||||||
|
emptyView.removeFromSuperview()
|
||||||
|
self.webView.isHidden = false
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,13 +104,27 @@ extension VPWebViewController: VPWebViewDelegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func webViewDidFinishLoad(_ webView: VPWebView) {
|
||||||
|
emptyView.isHidden = true
|
||||||
|
self.webView.isHidden = false
|
||||||
|
VPHUD.dismiss()
|
||||||
|
}
|
||||||
|
|
||||||
func webView(_ webView: VPWebView, didFailLoadWithError error: any Error) {
|
func webView(_ webView: VPWebView, didFailLoadWithError error: any Error) {
|
||||||
VPHUD.dismiss()
|
VPHUD.dismiss()
|
||||||
vpLog(message: error)
|
vpLog(message: error)
|
||||||
}
|
|
||||||
|
if VPNetworkReachabilityManager.manager.isReachable != true {
|
||||||
func webViewDidFinishLoad(_ webView: VPWebView) {
|
if emptyView.superview == nil {
|
||||||
VPHUD.dismiss()
|
view.addSubview(emptyView)
|
||||||
|
emptyView.snp.makeConstraints { make in
|
||||||
|
make.left.equalToSuperview()
|
||||||
|
make.centerX.equalToSuperview()
|
||||||
|
make.centerY.equalToSuperview().offset(-100)
|
||||||
|
}
|
||||||
|
self.webView.isHidden = true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
|
||||||
|
@ -100,10 +100,10 @@ extension VPMeViewController {
|
|||||||
guard self.isDidAppear else { return }
|
guard self.isDidAppear else { return }
|
||||||
guard self.vipAlertView == nil else { return }
|
guard self.vipAlertView == nil else { return }
|
||||||
guard !HWPanModalContentView.doesExis() else { return }
|
guard !HWPanModalContentView.doesExis() else { return }
|
||||||
guard let item = model?.list_sub_vip?.first else { return }
|
guard let list = model?.list_sub_vip, list.count > 0 else { return }
|
||||||
|
|
||||||
let alert = VPVipAlertView().show()
|
let alert = VPVipAlertView().show()
|
||||||
alert.model = item
|
alert.dataArr = list
|
||||||
self.vipAlertView = alert
|
self.vipAlertView = alert
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
232
Veloria/Class/Me/View/VPVipAlertItemView.swift
Normal file
@ -0,0 +1,232 @@
|
|||||||
|
//
|
||||||
|
// VPVipAlertItemView.swift
|
||||||
|
// Veloria
|
||||||
|
//
|
||||||
|
// Created by 湖南秦九 on 2025/6/21.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
class VPVipAlertItemView: UIControl {
|
||||||
|
|
||||||
|
var item: VPPayTemplateItem? {
|
||||||
|
didSet {
|
||||||
|
unitLabel.text = item?.currency
|
||||||
|
moneyLabel.text = item?.price
|
||||||
|
durationLabel.text = "/\(item?.vip_type_key?.getText() ?? "")"
|
||||||
|
|
||||||
|
if let coin = item?.send_coins, coin > 0 {
|
||||||
|
extraBgView.isHidden = false
|
||||||
|
|
||||||
|
let text = "veloria_extra".localized + " \(coin)"
|
||||||
|
// let text = String(format: "Extra %@".localized, "\(coin)")
|
||||||
|
extraLabel.text = "+" + text
|
||||||
|
} else {
|
||||||
|
extraBgView.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if let hot = item?.corner_marker, hot.count > 0 {
|
||||||
|
hotView.isHidden = false
|
||||||
|
} else {
|
||||||
|
hotView.isHidden = true
|
||||||
|
}
|
||||||
|
|
||||||
|
var colors: [CGColor] = []
|
||||||
|
switch item?.vip_type_key {
|
||||||
|
case .week:
|
||||||
|
vipBgView.image = UIImage(named: "vip_alert_bg_week")
|
||||||
|
colors = [UIColor.color647DA7().cgColor, UIColor.color414867().cgColor]
|
||||||
|
extraBgView.colors = [UIColor.colorDAFDFF().cgColor, UIColor.colorDAFDFF(alpha: 0).cgColor]
|
||||||
|
extraLabel.textColor = .color416767()
|
||||||
|
|
||||||
|
case .month:
|
||||||
|
vipBgView.image = UIImage(named: "vip_alert_bg_month")
|
||||||
|
colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
||||||
|
extraBgView.colors = [UIColor.colorD6E5F9().cgColor, UIColor.colorD6E5F9(alpha: 0).cgColor]
|
||||||
|
extraLabel.textColor = .color303962()
|
||||||
|
|
||||||
|
case .quarter:
|
||||||
|
vipBgView.image = UIImage(named: "vip_alert_bg_quarter")
|
||||||
|
colors = [UIColor.color7869FF().cgColor, UIColor.color9F45FF().cgColor]
|
||||||
|
extraBgView.colors = [UIColor.colorCABCFF().cgColor, UIColor.colorCABCFF(alpha: 0).cgColor]
|
||||||
|
extraLabel.textColor = .color5F1EB9()
|
||||||
|
|
||||||
|
case .year:
|
||||||
|
vipBgView.image = UIImage(named: "vip_alert_bg_year")
|
||||||
|
colors = [UIColor.color9C7565().cgColor, UIColor.color573D31().cgColor]
|
||||||
|
extraBgView.colors = [UIColor.colorFFE6CE().cgColor, UIColor.colorFFE6CE(alpha: 0).cgColor]
|
||||||
|
extraLabel.textColor = .color573D31()
|
||||||
|
|
||||||
|
default: break
|
||||||
|
}
|
||||||
|
|
||||||
|
unitLabel.gradientLayer.colors = colors
|
||||||
|
moneyLabel.gradientLayer.colors = colors
|
||||||
|
durationLabel.gradientLayer.colors = colors
|
||||||
|
|
||||||
|
updateLayout()
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override var isSelected: Bool {
|
||||||
|
didSet {
|
||||||
|
selectedImageView.isHidden = !isSelected
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override var intrinsicContentSize: CGSize {
|
||||||
|
return .init(width: UIScreen.width, height: 54)
|
||||||
|
}
|
||||||
|
|
||||||
|
private lazy var vipBgView: UIImageView = {
|
||||||
|
let imageView = UIImageView()
|
||||||
|
return imageView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var hotView: UIView = {
|
||||||
|
let view = UIButton(type: .custom)
|
||||||
|
view.isUserInteractionEnabled = false
|
||||||
|
view.setBackgroundImage(UIImage(named: "hot_bg_icon_01"), for: .normal)
|
||||||
|
// view.setTitle("HOT", for: .normal)
|
||||||
|
// view.setTitleColor(.colorFFFFFF(), for: .normal)
|
||||||
|
// view.titleLabel?.font = .fontRegular(ofSize: 11)
|
||||||
|
return view
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var unitLabel: VPGradientLabel = {
|
||||||
|
let label = VPGradientLabel()
|
||||||
|
label.font = .fontRegular(ofSize: 14)
|
||||||
|
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var moneyLabel: VPGradientLabel = {
|
||||||
|
let label = VPGradientLabel()
|
||||||
|
label.font = .fontAaHouDiHei(ofSize: 22)
|
||||||
|
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var durationLabel: VPGradientLabel = {
|
||||||
|
let label = VPGradientLabel()
|
||||||
|
label.font = .fontRegular(ofSize: 12)
|
||||||
|
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var extraBgView: VPGradientView = {
|
||||||
|
let view = VPGradientView()
|
||||||
|
view.colors = [UIColor.colorDAFDFF().cgColor, UIColor.colorDAFDFF(alpha: 0).cgColor]
|
||||||
|
view.locations = [0, 1]
|
||||||
|
view.startPoint = .init(x: 0, y: 0.5)
|
||||||
|
view.endPoint = .init(x: 1, y: 0.5)
|
||||||
|
view.layer.cornerRadius = 4
|
||||||
|
view.layer.masksToBounds = true
|
||||||
|
return view
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var extraLabel: UILabel = {
|
||||||
|
let label = UILabel()
|
||||||
|
label.font = .fontRegular(ofSize: 10)
|
||||||
|
label.textColor = .color416767()
|
||||||
|
return label
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var extraIconView: UIImageView = {
|
||||||
|
let imageView = UIImageView(image: UIImage(named: "coin_icon_08"))
|
||||||
|
return imageView
|
||||||
|
}()
|
||||||
|
|
||||||
|
private lazy var selectedImageView: UIImageView = {
|
||||||
|
let imageView = UIImageView(image: UIImage(named: "selected_icon_03"))
|
||||||
|
return imageView
|
||||||
|
}()
|
||||||
|
|
||||||
|
override init(frame: CGRect) {
|
||||||
|
super.init(frame: frame)
|
||||||
|
|
||||||
|
vp_setupUI()
|
||||||
|
}
|
||||||
|
|
||||||
|
required init?(coder: NSCoder) {
|
||||||
|
fatalError("init(coder:) has not been implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private func updateLayout() {
|
||||||
|
if let coin = item?.send_coins, coin > 0 {
|
||||||
|
unitLabel.snp.updateConstraints { make in
|
||||||
|
make.top.equalToSuperview().offset(12)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
unitLabel.snp.updateConstraints { make in
|
||||||
|
make.top.equalToSuperview().offset(22)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension VPVipAlertItemView {
|
||||||
|
|
||||||
|
private func vp_setupUI() {
|
||||||
|
addSubview(vipBgView)
|
||||||
|
vipBgView.addSubview(hotView)
|
||||||
|
vipBgView.addSubview(unitLabel)
|
||||||
|
vipBgView.addSubview(moneyLabel)
|
||||||
|
vipBgView.addSubview(durationLabel)
|
||||||
|
vipBgView.addSubview(extraBgView)
|
||||||
|
extraBgView.addSubview(extraLabel)
|
||||||
|
extraBgView.addSubview(extraIconView)
|
||||||
|
vipBgView.addSubview(selectedImageView)
|
||||||
|
|
||||||
|
vipBgView.snp.makeConstraints { make in
|
||||||
|
make.edges.equalToSuperview()
|
||||||
|
}
|
||||||
|
|
||||||
|
hotView.snp.makeConstraints { make in
|
||||||
|
make.top.equalToSuperview().offset(4)
|
||||||
|
make.right.equalToSuperview().offset(-4)
|
||||||
|
}
|
||||||
|
|
||||||
|
unitLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalToSuperview().offset(16)
|
||||||
|
make.top.equalToSuperview().offset(10)
|
||||||
|
}
|
||||||
|
|
||||||
|
moneyLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalTo(unitLabel.snp.right)
|
||||||
|
make.bottom.equalTo(unitLabel).offset(4)
|
||||||
|
}
|
||||||
|
|
||||||
|
durationLabel.snp.makeConstraints { make in
|
||||||
|
make.bottom.equalTo(moneyLabel).offset(-5)
|
||||||
|
make.left.equalTo(moneyLabel.snp.right)
|
||||||
|
}
|
||||||
|
|
||||||
|
extraBgView.snp.makeConstraints { make in
|
||||||
|
make.left.equalToSuperview().offset(16)
|
||||||
|
make.bottom.equalToSuperview().offset(-5)
|
||||||
|
make.height.equalTo(17)
|
||||||
|
// make.width.equalTo(86)
|
||||||
|
}
|
||||||
|
|
||||||
|
extraLabel.snp.makeConstraints { make in
|
||||||
|
make.left.equalToSuperview().offset(6)
|
||||||
|
make.centerY.equalToSuperview()
|
||||||
|
}
|
||||||
|
|
||||||
|
extraIconView.snp.makeConstraints { make in
|
||||||
|
make.centerY.equalToSuperview()
|
||||||
|
make.left.equalTo(extraLabel.snp.right).offset(3)
|
||||||
|
make.right.equalToSuperview().offset(-6)
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedImageView.snp.makeConstraints { make in
|
||||||
|
make.right.equalToSuperview()
|
||||||
|
make.bottom.equalToSuperview()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -37,26 +37,26 @@ class VPVipAlertView: VPBaseAlertView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var model: VPPayTemplateItem? {
|
|
||||||
|
var dataArr: [VPPayTemplateItem] = [] {
|
||||||
didSet {
|
didSet {
|
||||||
unitLabel.text = model?.currency
|
stackView.removeAllArrangedSubview()
|
||||||
moneyLabel.text = model?.price
|
|
||||||
durationLabel.text = "/\(model?.vip_type_key?.getText() ?? "")"
|
|
||||||
|
|
||||||
if let coin = model?.send_coins, coin > 0 {
|
dataArr.forEach {
|
||||||
extraBgView.isHidden = false
|
let view = VPVipAlertItemView()
|
||||||
|
view.isSelected = false
|
||||||
let text = "veloria_extra".localized + " \(coin)"
|
view.item = $0
|
||||||
// let text = String(format: "Extra %@".localized, "\(coin)")
|
view.addTarget(self, action: #selector(handleItemView), for: .touchUpInside)
|
||||||
extraLabel.text = "+" + text
|
stackView.addArrangedSubview(view)
|
||||||
} else {
|
|
||||||
extraBgView.isHidden = true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private var currentItem: VPPayTemplateItem?
|
||||||
|
|
||||||
private lazy var bgView: UIView = {
|
private lazy var bgView: UIView = {
|
||||||
let view = UIImageView(image: UIImage(named: "vpi_alert_bg_image"))
|
let view = UIImageView(image: UIImage(named: "vpi_alert_bg_image"))
|
||||||
|
view.isUserInteractionEnabled = true
|
||||||
return view
|
return view
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -72,16 +72,6 @@ class VPVipAlertView: VPBaseAlertView {
|
|||||||
return button
|
return button
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var unlockButton: UIButton = {
|
|
||||||
let button = UIButton(type: .custom)
|
|
||||||
button.setBackgroundImage(UIImage(named: "vip_unlock_button"), for: .normal)
|
|
||||||
button.setTitle("veloria_vip_splash_onclick".localized, for: .normal)
|
|
||||||
button.setTitleColor(.color005D48(), for: .normal)
|
|
||||||
button.titleLabel?.font = .fontMedium(ofSize: 14)
|
|
||||||
button.addTarget(self, action: #selector(hadnleUnlockButton), for: .touchUpInside)
|
|
||||||
return button
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var titleLabel: UILabel = {
|
private lazy var titleLabel: UILabel = {
|
||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontBold(ofSize: 16)
|
label.font = .fontBold(ofSize: 16)
|
||||||
@ -100,65 +90,13 @@ class VPVipAlertView: VPBaseAlertView {
|
|||||||
return label
|
return label
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var vipBgView: UIImageView = {
|
private lazy var stackView: UIStackView = {
|
||||||
let imageView = UIImageView(image: UIImage(named: "vip_alert_bg_week"))
|
let view = UIStackView()
|
||||||
return imageView
|
view.axis = .vertical
|
||||||
}()
|
view.spacing = 10
|
||||||
|
|
||||||
private lazy var hotView: UIView = {
|
|
||||||
let view = UIButton(type: .custom)
|
|
||||||
view.isUserInteractionEnabled = false
|
|
||||||
view.setBackgroundImage(UIImage(named: "hot_bg_icon_01"), for: .normal)
|
|
||||||
view.setTitle("HOT", for: .normal)
|
|
||||||
view.setTitleColor(.colorFFFFFF(), for: .normal)
|
|
||||||
view.titleLabel?.font = .fontRegular(ofSize: 11)
|
|
||||||
return view
|
return view
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var unitLabel: VPGradientLabel = {
|
|
||||||
let label = VPGradientLabel()
|
|
||||||
label.font = .fontRegular(ofSize: 14)
|
|
||||||
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
|
||||||
return label
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var moneyLabel: VPGradientLabel = {
|
|
||||||
let label = VPGradientLabel()
|
|
||||||
label.font = .fontAaHouDiHei(ofSize: 22)
|
|
||||||
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
|
||||||
return label
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var durationLabel: VPGradientLabel = {
|
|
||||||
let label = VPGradientLabel()
|
|
||||||
label.font = .fontRegular(ofSize: 12)
|
|
||||||
label.gradientLayer.colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
|
||||||
return label
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var extraBgView: UIView = {
|
|
||||||
let view = VPGradientView()
|
|
||||||
view.colors = [UIColor.colorDAFDFF().cgColor, UIColor.colorDAFDFF(alpha: 0).cgColor]
|
|
||||||
view.locations = [0, 1]
|
|
||||||
view.startPoint = .init(x: 0, y: 0.5)
|
|
||||||
view.endPoint = .init(x: 1, y: 0.5)
|
|
||||||
view.layer.cornerRadius = 4
|
|
||||||
view.layer.masksToBounds = true
|
|
||||||
return view
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var extraLabel: UILabel = {
|
|
||||||
let label = UILabel()
|
|
||||||
label.font = .fontRegular(ofSize: 10)
|
|
||||||
label.textColor = .color416767()
|
|
||||||
return label
|
|
||||||
}()
|
|
||||||
|
|
||||||
private lazy var extraIconView: UIImageView = {
|
|
||||||
let imageView = UIImageView(image: UIImage(named: "coin_icon_08"))
|
|
||||||
return imageView
|
|
||||||
}()
|
|
||||||
|
|
||||||
|
|
||||||
override init(frame: CGRect) {
|
override init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
@ -195,6 +133,29 @@ extension VPVipAlertView {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc private func handleItemView(sender: VPVipAlertItemView) {
|
||||||
|
guard let item = sender.item else { return }
|
||||||
|
if sender.item != currentItem {
|
||||||
|
currentItem = item
|
||||||
|
self.stackView.arrangedSubviews.forEach {
|
||||||
|
let view = $0 as? VPVipAlertItemView
|
||||||
|
if view?.item == item {
|
||||||
|
view?.isSelected = true
|
||||||
|
} else {
|
||||||
|
view?.isSelected = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
VPIAPManager.manager.start(model: item) { [weak self] finish in
|
||||||
|
if finish {
|
||||||
|
self?.dismiss()
|
||||||
|
VPLoginManager.manager.updateUserInfo(completer: nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extension VPVipAlertView {
|
extension VPVipAlertView {
|
||||||
@ -202,23 +163,15 @@ extension VPVipAlertView {
|
|||||||
private func vp_setupUI() {
|
private func vp_setupUI() {
|
||||||
contentView.addSubview(bgView)
|
contentView.addSubview(bgView)
|
||||||
contentView.addSubview(bgIconImageView)
|
contentView.addSubview(bgIconImageView)
|
||||||
contentView.addSubview(unlockButton)
|
|
||||||
contentView.addSubview(closeButton)
|
contentView.addSubview(closeButton)
|
||||||
bgView.addSubview(titleLabel)
|
bgView.addSubview(titleLabel)
|
||||||
bgView.addSubview(textLabel)
|
bgView.addSubview(textLabel)
|
||||||
bgView.addSubview(vipBgView)
|
bgView.addSubview(stackView)
|
||||||
vipBgView.addSubview(hotView)
|
|
||||||
vipBgView.addSubview(unitLabel)
|
|
||||||
vipBgView.addSubview(moneyLabel)
|
|
||||||
vipBgView.addSubview(durationLabel)
|
|
||||||
vipBgView.addSubview(extraBgView)
|
|
||||||
extraBgView.addSubview(extraLabel)
|
|
||||||
extraBgView.addSubview(extraIconView)
|
|
||||||
|
|
||||||
bgView.snp.makeConstraints { make in
|
bgView.snp.makeConstraints { make in
|
||||||
make.top.left.right.equalToSuperview()
|
make.top.left.right.equalToSuperview()
|
||||||
make.width.equalTo(274)
|
make.width.equalTo(274)
|
||||||
// make.height.equalTo(330)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bgIconImageView.snp.makeConstraints { make in
|
bgIconImageView.snp.makeConstraints { make in
|
||||||
@ -226,14 +179,9 @@ extension VPVipAlertView {
|
|||||||
make.top.equalToSuperview().offset(-136)
|
make.top.equalToSuperview().offset(-136)
|
||||||
}
|
}
|
||||||
|
|
||||||
unlockButton.snp.makeConstraints { make in
|
|
||||||
make.centerX.equalToSuperview()
|
|
||||||
make.top.equalTo(bgView.snp.bottom).offset(8)
|
|
||||||
}
|
|
||||||
|
|
||||||
closeButton.snp.makeConstraints { make in
|
closeButton.snp.makeConstraints { make in
|
||||||
make.centerX.equalToSuperview()
|
make.centerX.equalToSuperview()
|
||||||
make.top.equalTo(unlockButton.snp.bottom).offset(20)
|
make.top.equalTo(bgView.snp.bottom).offset(20)
|
||||||
make.bottom.equalToSuperview()
|
make.bottom.equalToSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,49 +196,14 @@ extension VPVipAlertView {
|
|||||||
make.right.lessThanOrEqualToSuperview().offset(-20)
|
make.right.lessThanOrEqualToSuperview().offset(-20)
|
||||||
}
|
}
|
||||||
|
|
||||||
vipBgView.snp.makeConstraints { make in
|
stackView.snp.makeConstraints { make in
|
||||||
make.top.equalTo(textLabel.snp.bottom).offset(15)
|
make.left.equalToSuperview().offset(16)
|
||||||
make.centerX.equalToSuperview()
|
make.centerX.equalToSuperview()
|
||||||
make.bottom.equalToSuperview().offset(-22)
|
make.top.equalTo(textLabel.snp.bottom).offset(12)
|
||||||
|
make.bottom.equalToSuperview().offset(-20)
|
||||||
}
|
}
|
||||||
|
|
||||||
hotView.snp.makeConstraints { make in
|
|
||||||
make.top.equalToSuperview()
|
|
||||||
make.right.equalToSuperview()
|
|
||||||
}
|
|
||||||
|
|
||||||
unitLabel.snp.makeConstraints { make in
|
|
||||||
make.left.equalToSuperview().offset(16)
|
|
||||||
make.top.equalToSuperview().offset(16)
|
|
||||||
}
|
|
||||||
|
|
||||||
moneyLabel.snp.makeConstraints { make in
|
|
||||||
make.left.equalTo(unitLabel.snp.right)
|
|
||||||
make.bottom.equalTo(unitLabel).offset(4)
|
|
||||||
}
|
|
||||||
|
|
||||||
durationLabel.snp.makeConstraints { make in
|
|
||||||
make.bottom.equalTo(moneyLabel).offset(-5)
|
|
||||||
make.left.equalTo(moneyLabel.snp.right)
|
|
||||||
}
|
|
||||||
|
|
||||||
extraBgView.snp.makeConstraints { make in
|
|
||||||
make.left.equalToSuperview().offset(16)
|
|
||||||
make.bottom.equalToSuperview().offset(-9)
|
|
||||||
make.height.equalTo(21)
|
|
||||||
// make.width.equalTo(86)
|
|
||||||
}
|
|
||||||
|
|
||||||
extraLabel.snp.makeConstraints { make in
|
|
||||||
make.left.equalToSuperview().offset(11)
|
|
||||||
make.centerY.equalToSuperview()
|
|
||||||
}
|
|
||||||
|
|
||||||
extraIconView.snp.makeConstraints { make in
|
|
||||||
make.centerY.equalToSuperview()
|
|
||||||
make.left.equalTo(extraLabel.snp.right).offset(3)
|
|
||||||
make.right.equalToSuperview().offset(-7)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,15 +10,7 @@ import WebKit
|
|||||||
|
|
||||||
class VPRewardsViewController: VPCampaignWebViewController {
|
class VPRewardsViewController: VPCampaignWebViewController {
|
||||||
|
|
||||||
private lazy var emptyView: VPEmptyView = {
|
|
||||||
let view = VPEmptyView.createNoNetworkEmptyView { [weak self] in
|
|
||||||
guard let self = self else { return }
|
|
||||||
if let url = self.urlStr {
|
|
||||||
self.load(urlString: url)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return view
|
|
||||||
}()
|
|
||||||
|
|
||||||
override func viewDidLoad() {
|
override func viewDidLoad() {
|
||||||
self.urlStr = kVPRewardsWebUrl
|
self.urlStr = kVPRewardsWebUrl
|
||||||
@ -37,27 +29,17 @@ class VPRewardsViewController: VPCampaignWebViewController {
|
|||||||
|
|
||||||
override func webView(_ webView: VPWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool {
|
override func webView(_ webView: VPWebView, shouldStartLoadWith navigationAction: WKNavigationAction) -> Bool {
|
||||||
let result = super.webView(webView, shouldStartLoadWith: navigationAction)
|
let result = super.webView(webView, shouldStartLoadWith: navigationAction)
|
||||||
emptyView.removeFromSuperview()
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
override func webViewDidFinishLoad(_ webView: VPWebView) {
|
override func webViewDidFinishLoad(_ webView: VPWebView) {
|
||||||
super.webViewDidFinishLoad(webView)
|
super.webViewDidFinishLoad(webView)
|
||||||
emptyView.isHidden = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override func webView(_ webView: VPWebView, didFailLoadWithError error: any Error) {
|
override func webView(_ webView: VPWebView, didFailLoadWithError error: any Error) {
|
||||||
super.webView(webView, didFailLoadWithError: error)
|
super.webView(webView, didFailLoadWithError: error)
|
||||||
|
|
||||||
if VPNetworkReachabilityManager.manager.isReachable != true {
|
|
||||||
if emptyView.superview == nil {
|
|
||||||
view.addSubview(emptyView)
|
|
||||||
emptyView.snp.makeConstraints { make in
|
|
||||||
make.left.equalToSuperview()
|
|
||||||
make.centerX.equalToSuperview()
|
|
||||||
make.centerY.equalToSuperview().offset(-100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,16 +74,6 @@ class VPWalletViewController: WMZPageController {
|
|||||||
return param
|
return param
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// private lazy var pageView: WMZPageView = {
|
|
||||||
// let y = UIScreen.navBarHeight
|
|
||||||
// let view = WMZPageView(frame: .init(x: 0, y: y, width: UIScreen.width, height: UIScreen.height - y), param: pageParam, parentReponder: self)
|
|
||||||
//
|
|
||||||
// view.backgroundColor = .clear
|
|
||||||
// view.downSc?.backgroundColor = .clear
|
|
||||||
// view.downSc?.isScrollEnabled = true
|
|
||||||
//
|
|
||||||
// return view
|
|
||||||
// }()
|
|
||||||
|
|
||||||
private(set) lazy var bgImageView: UIImageView = {
|
private(set) lazy var bgImageView: UIImageView = {
|
||||||
let imageView = UIImageView(image: UIImage(named: "bg_image_01"))
|
let imageView = UIImageView(image: UIImage(named: "bg_image_01"))
|
||||||
|
@ -32,11 +32,15 @@ class VPConsumptionRecordsCell: VPWalletBaseCell {
|
|||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontMedium(ofSize: 15)
|
label.font = .fontMedium(ofSize: 15)
|
||||||
label.textColor = .color05CEA0()
|
label.textColor = .color05CEA0()
|
||||||
|
label.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
return label
|
return label
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var coinIconImageView: UIImageView = {
|
private lazy var coinIconImageView: UIImageView = {
|
||||||
let imageView = UIImageView(image: UIImage(named: "coin_icon_07"))
|
let imageView = UIImageView(image: UIImage(named: "coin_icon_07"))
|
||||||
|
imageView.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
imageView.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -80,6 +84,7 @@ extension VPConsumptionRecordsCell {
|
|||||||
titleLabel.snp.makeConstraints { make in
|
titleLabel.snp.makeConstraints { make in
|
||||||
make.left.equalToSuperview().offset(11)
|
make.left.equalToSuperview().offset(11)
|
||||||
make.centerY.equalTo(coinIconImageView)
|
make.centerY.equalTo(coinIconImageView)
|
||||||
|
make.right.lessThanOrEqualTo(coinCountLabel.snp.left).offset(-10)
|
||||||
}
|
}
|
||||||
|
|
||||||
coinCountLabel.snp.makeConstraints { make in
|
coinCountLabel.snp.makeConstraints { make in
|
||||||
|
@ -46,11 +46,15 @@ class VPGiveCoinRecordsCell: VPWalletBaseCell {
|
|||||||
let label = UILabel()
|
let label = UILabel()
|
||||||
label.font = .fontMedium(ofSize: 15)
|
label.font = .fontMedium(ofSize: 15)
|
||||||
label.textColor = .color05CEA0()
|
label.textColor = .color05CEA0()
|
||||||
|
label.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
label.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
return label
|
return label
|
||||||
}()
|
}()
|
||||||
|
|
||||||
private lazy var coinIconImageView: UIImageView = {
|
private lazy var coinIconImageView: UIImageView = {
|
||||||
let imageView = UIImageView(image: UIImage(named: "coin_icon_07"))
|
let imageView = UIImageView(image: UIImage(named: "coin_icon_07"))
|
||||||
|
imageView.setContentHuggingPriority(.required, for: .horizontal)
|
||||||
|
imageView.setContentCompressionResistancePriority(.required, for: .horizontal)
|
||||||
return imageView
|
return imageView
|
||||||
}()
|
}()
|
||||||
|
|
||||||
@ -84,6 +88,7 @@ extension VPGiveCoinRecordsCell {
|
|||||||
|
|
||||||
titleLabel.snp.makeConstraints { make in
|
titleLabel.snp.makeConstraints { make in
|
||||||
make.left.equalToSuperview().offset(11)
|
make.left.equalToSuperview().offset(11)
|
||||||
|
make.right.lessThanOrEqualTo(self.coinCountLabel.snp.left).offset(-10)
|
||||||
make.centerY.equalTo(coinIconImageView)
|
make.centerY.equalTo(coinIconImageView)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,12 +5,12 @@
|
|||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "Rectangle 29@2x.png",
|
"filename" : "hot@2x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "Rectangle 29@3x.png",
|
"filename" : "hot@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 509 B |
Before Width: | Height: | Size: 695 B |
BIN
Veloria/Source/Assets.xcassets/icon/hot_bg_icon_01.imageset/hot@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Veloria/Source/Assets.xcassets/icon/hot_bg_icon_01.imageset/hot@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.0 KiB |
BIN
Veloria/Source/Assets.xcassets/icon/selected_icon_03.imageset/Component 63@2x.png
vendored
Normal file
After Width: | Height: | Size: 690 B |
BIN
Veloria/Source/Assets.xcassets/icon/selected_icon_03.imageset/Component 63@3x.png
vendored
Normal file
After Width: | Height: | Size: 929 B |
22
Veloria/Source/Assets.xcassets/icon/selected_icon_03.imageset/Contents.json
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "Component 63@2x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "Component 63@3x.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 56 KiB |
@ -5,12 +5,12 @@
|
|||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "按钮@2x.png",
|
"filename" : "月会员bg@2x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "按钮@3x.png",
|
"filename" : "月会员bg@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_month.imageset/月会员bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_month.imageset/月会员bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 87 KiB |
22
Veloria/Source/Assets.xcassets/image/vip_alert_bg_quarter.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
Veloria/Source/Assets.xcassets/image/vip_alert_bg_quarter.imageset/季会员bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 40 KiB |
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_quarter.imageset/季会员bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 86 KiB |
@ -5,12 +5,12 @@
|
|||||||
"scale" : "1x"
|
"scale" : "1x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "会员卡片bg@2x.png",
|
"filename" : "周会员bg@2x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "2x"
|
"scale" : "2x"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"filename" : "会员卡片bg@3x.png",
|
"filename" : "周会员bg@3x.png",
|
||||||
"idiom" : "universal",
|
"idiom" : "universal",
|
||||||
"scale" : "3x"
|
"scale" : "3x"
|
||||||
}
|
}
|
||||||
|
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 124 KiB |
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_week.imageset/周会员bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_week.imageset/周会员bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 94 KiB |
22
Veloria/Source/Assets.xcassets/image/vip_alert_bg_year.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
Veloria/Source/Assets.xcassets/image/vip_alert_bg_year.imageset/年会员bg@2x.png
vendored
Normal file
After Width: | Height: | Size: 43 KiB |
BIN
Veloria/Source/Assets.xcassets/image/vip_alert_bg_year.imageset/年会员bg@3x.png
vendored
Normal file
After Width: | Height: | Size: 94 KiB |