203 lines
6.5 KiB
Swift
203 lines
6.5 KiB
Swift
//
|
|
// SPStoreViewController.swift
|
|
// MoviaBox
|
|
//
|
|
// Created by 佳尔 on 2025/4/29.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class SPStoreViewController: SPViewController {
|
|
|
|
//MARK: UI属性
|
|
private lazy var scrollView: SPScrollView = {
|
|
let scrollView = SPScrollView()
|
|
return scrollView
|
|
}()
|
|
|
|
private lazy var stackView: UIStackView = {
|
|
let view = UIStackView()
|
|
view.axis = .vertical
|
|
view.spacing = 16
|
|
return view
|
|
}()
|
|
|
|
private lazy var rechargeView: SPCoinRechargeView = {
|
|
let view = SPCoinRechargeView()
|
|
view.userInfo = SPLoginManager.manager.userInfo
|
|
view.rechargeFinishHandle = { [weak self] in
|
|
self?.buyFinish()
|
|
}
|
|
return view
|
|
}()
|
|
|
|
private lazy var memberView: SPMemberRechargeView = {
|
|
let view = SPMemberRechargeView()
|
|
view.buyFinishHandle = { [weak self] in
|
|
self?.buyFinish()
|
|
}
|
|
return view
|
|
}()
|
|
|
|
private lazy var tipTitleLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontMedium(ofSize: 12)
|
|
label.textColor = .colorFFFFFF(alpha: 0.7)
|
|
return label
|
|
}()
|
|
|
|
private lazy var tipTextLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.numberOfLines = 0
|
|
label.textColor = .colorFFFFFF(alpha: 0.5)
|
|
label.font = .fontRegular(ofSize: 12)
|
|
return label
|
|
}()
|
|
|
|
private lazy var agreementLabel: YYLabel = {
|
|
let text1 = "movia_terms_of_service".localized
|
|
let text2 = "movia_profile_Privacy_Policy".localized
|
|
let text3 = "movia_renewal_agreement".localized
|
|
let text = "\(text1) | \(text2)\n\(text3)"
|
|
let range1 = text.ocString().range(of: text1)
|
|
let range2 = text.ocString().range(of: text2)
|
|
let range3 = text.ocString().range(of: text3)
|
|
|
|
let string = NSMutableAttributedString(string: text)
|
|
string.color = .colorFFFFFF()
|
|
string.font = tipTextLabel.font
|
|
|
|
string.setTextHighlight(range1, color: nil, backgroundColor: nil) { [weak self] _, _, _, _ in
|
|
guard let self = self else { return }
|
|
let vc = SPWebViewController()
|
|
vc.urlStr = SPUserAgreementWebUrl
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
}
|
|
|
|
string.setTextHighlight(range2, color: nil, backgroundColor: nil) { [weak self] _, _, _, _ in
|
|
guard let self = self else { return }
|
|
let vc = SPWebViewController()
|
|
vc.urlStr = SPPrivacyPolicyWebUrl
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
}
|
|
|
|
string.setTextHighlight(range3, color: nil, backgroundColor: nil) { [weak self] _, _, _, _ in
|
|
guard let self = self else { return }
|
|
let vc = SPWebViewController()
|
|
vc.urlStr = SPMemberShipAgreement
|
|
self.navigationController?.pushViewController(vc, animated: true)
|
|
}
|
|
|
|
|
|
let label = YYLabel()
|
|
label.numberOfLines = 0
|
|
label.attributedText = string
|
|
return label
|
|
}()
|
|
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
self.title = "movia_Store".localized
|
|
self.edgesForExtendedLayout = .top
|
|
setBackgroundView(isShowGradient: false, bgImage: UIImage(named: "buy_bg_image_02"))
|
|
|
|
let rightBarButton = UIBarButtonItem(title: "movia_Restore".localized, style: .plain, target: self, action: #selector(handelRightBarButton))
|
|
self.navigationItem.rightBarButtonItem = rightBarButton
|
|
|
|
tipTitleLabel.text = "movia_store_tips_title_ios".localized
|
|
tipTextLabel.text = "movia_store_tips_ios".localized.replacingOccurrences(of: "\\n", with: "\n")
|
|
|
|
_setupUI()
|
|
|
|
requestPayTemplate()
|
|
}
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
self.navigationController?.setNavigationBarHidden(false, animated: true)
|
|
setNavigationNormalStyle(backgroundColor: .clear, isTranslucent: true)
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
extension SPStoreViewController {
|
|
|
|
@objc private func handelRightBarButton() {
|
|
SPIAPManager.manager.restore { [weak self] isFinish in
|
|
guard let self = self else { return }
|
|
self.buyFinish()
|
|
}
|
|
}
|
|
|
|
@objc private func buyFinish() {
|
|
SPLoginManager.manager.updateUserInfo { [weak self] in
|
|
self?.rechargeView.userInfo = SPLoginManager.manager.userInfo
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension SPStoreViewController {
|
|
|
|
private func _setupUI() {
|
|
view.addSubview(scrollView)
|
|
scrollView.addSubview(stackView)
|
|
scrollView.addSubview(tipTitleLabel)
|
|
scrollView.addSubview(tipTextLabel)
|
|
scrollView.addSubview(agreementLabel)
|
|
|
|
scrollView.snp.makeConstraints { make in
|
|
make.left.right.bottom.equalToSuperview()
|
|
make.top.equalToSuperview().offset(kSPNavBarHeight)
|
|
}
|
|
|
|
stackView.snp.makeConstraints { make in
|
|
make.left.right.top.equalToSuperview()
|
|
// make.bottom.equalTo(-(kSPTabbarSafeBottomMargin + 10))
|
|
make.width.equalTo(kSPScreenWidth)
|
|
}
|
|
|
|
tipTitleLabel.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(24)
|
|
make.top.equalTo(stackView.snp.bottom).offset(34)
|
|
}
|
|
|
|
tipTextLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(tipTitleLabel)
|
|
make.right.lessThanOrEqualTo(stackView).offset(-24)
|
|
make.top.equalTo(tipTitleLabel.snp.bottom).offset(4)
|
|
// make.bottom.equalTo(-(kSPTabbarSafeBottomMargin + 10))
|
|
}
|
|
|
|
agreementLabel.snp.makeConstraints { make in
|
|
make.top.equalTo(tipTextLabel.snp.bottom).offset(20)
|
|
make.left.equalTo(tipTextLabel)
|
|
make.bottom.equalTo(-(kSPTabbarSafeBottomMargin + 10))
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension SPStoreViewController {
|
|
|
|
///请求支付模版
|
|
private func requestPayTemplate() {
|
|
SPWalletAPI.requestPayTemplate { [weak self] templateModel in
|
|
guard let self = self else { return }
|
|
self.rechargeView.dataArr = templateModel?.list_coins
|
|
self.memberView.setDataArr(dataArr: templateModel?.list_sub_vip)
|
|
|
|
self.stackView.removeAllArrangedSubview()
|
|
|
|
self.stackView.addArrangedSubview(self.memberView)
|
|
self.stackView.addArrangedSubview(self.rechargeView)
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|