|
|
@@ -23,12 +23,18 @@ class LNWalletViewController: LNViewController {
|
|
|
private let diamondLabel = UILabel()
|
|
|
private let beanLabel = UILabel()
|
|
|
|
|
|
+ private let bannerView = UIView()
|
|
|
+ private let bannerPagerView = LNCyclePager()
|
|
|
+ private let bannerPageControl = LNCyclePageControl()
|
|
|
+ private var bannerList: [LNBannerInfoVO] = []
|
|
|
+
|
|
|
override func viewDidLoad() {
|
|
|
super.viewDidLoad()
|
|
|
|
|
|
setupViews()
|
|
|
|
|
|
updateWalletInfo()
|
|
|
+ loadBanner()
|
|
|
LNEventDeliver.addObserver(self)
|
|
|
LNPurchaseManager.shared.reloadWalletInfo()
|
|
|
}
|
|
|
@@ -71,6 +77,19 @@ extension LNWalletViewController {
|
|
|
|
|
|
stackView.addArrangedSubview(buildWallet())
|
|
|
stackView.addArrangedSubview(buildIncome())
|
|
|
+ stackView.addArrangedSubview(buildBanner())
|
|
|
+ }
|
|
|
+
|
|
|
+ private func loadBanner() {
|
|
|
+ LNConfigManager.shared.getBannerList(adSlot: 1) { [weak self] list in
|
|
|
+ guard let self else { return }
|
|
|
+ bannerList = list ?? []
|
|
|
+ bannerView.isHidden = bannerList.isEmpty
|
|
|
+ bannerPageControl.numberOfPages = bannerList.count
|
|
|
+ bannerPageControl.currentPage = 0
|
|
|
+ bannerPageControl.isHidden = bannerList.count <= 1
|
|
|
+ bannerPagerView.reloadData()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private func setupNavBar() {
|
|
|
@@ -423,6 +442,71 @@ extension LNWalletViewController {
|
|
|
|
|
|
return container
|
|
|
}
|
|
|
+
|
|
|
+ private func buildBanner() -> UIView {
|
|
|
+ bannerView.isHidden = true
|
|
|
+ bannerView.layer.cornerRadius = 16
|
|
|
+ bannerView.layer.masksToBounds = true
|
|
|
+ bannerView.snp.makeConstraints { make in
|
|
|
+ make.height.equalTo(70)
|
|
|
+ }
|
|
|
+
|
|
|
+ bannerPagerView.layer.cornerRadius = 16
|
|
|
+ bannerPagerView.layer.masksToBounds = true
|
|
|
+ bannerPagerView.isInfiniteLoop = true
|
|
|
+ bannerPagerView.autoScrollInterval = 3
|
|
|
+ bannerPagerView.reloadDataNeedResetIndex = true
|
|
|
+ bannerPagerView.bindPageControl(bannerPageControl)
|
|
|
+ bannerPagerView.register(LNAdBannerImageCell.self, forCellWithReuseIdentifier: LNAdBannerImageCell.className)
|
|
|
+ bannerPagerView.numberOfItemsProvider = { [weak self] in
|
|
|
+ self?.bannerList.count ?? 0
|
|
|
+ }
|
|
|
+ bannerPagerView.cellProvider = { [weak self] pager, index in
|
|
|
+ guard let self else { return UICollectionViewCell() }
|
|
|
+ let cell = pager.dequeueReusableCell(
|
|
|
+ withReuseIdentifier: LNAdBannerImageCell.className,
|
|
|
+ for: index
|
|
|
+ ) as! LNAdBannerImageCell
|
|
|
+ cell.update(self.bannerList[index])
|
|
|
+ return cell
|
|
|
+ }
|
|
|
+ bannerPagerView.layoutProvider = { [weak self] in
|
|
|
+ let layout = LNCyclePagerViewLayout()
|
|
|
+ layout.itemSize = self?.bannerPagerView.bounds.size ?? .zero
|
|
|
+ layout.itemSpacing = 0
|
|
|
+ layout.scrollDirection = .horizontal
|
|
|
+ layout.layoutType = .normal
|
|
|
+ return layout
|
|
|
+ }
|
|
|
+ bannerPagerView.didScrollFromIndexToIndex = { [weak self] _, toIndex in
|
|
|
+ self?.bannerPageControl.currentPage = toIndex
|
|
|
+ }
|
|
|
+ bannerPagerView.didSelectItem = { [weak self] _, index in
|
|
|
+ guard let self, index >= 0, index < self.bannerList.count else { return }
|
|
|
+ let item = self.bannerList[index]
|
|
|
+ guard !item.jump.isEmpty else { return }
|
|
|
+ self.view.pushToWebView(.init(url: item.jump))
|
|
|
+ }
|
|
|
+
|
|
|
+ bannerView.addSubview(bannerPagerView)
|
|
|
+ bannerPagerView.snp.makeConstraints { make in
|
|
|
+ make.edges.equalToSuperview()
|
|
|
+ }
|
|
|
+
|
|
|
+ bannerPageControl.pageIndicatorSize = CGSize(width: 6, height: 6)
|
|
|
+ bannerPageControl.currentPageIndicatorSize = CGSize(width: 16, height: 6)
|
|
|
+ bannerPageControl.pageIndicatorTintColor = .init(hex: "#FFFFFF80")
|
|
|
+ bannerPageControl.currentPageIndicatorTintColor = .white
|
|
|
+ bannerPageControl.pageIndicatorSpacing = 4
|
|
|
+ bannerPagerView.addSubview(bannerPageControl)
|
|
|
+ bannerPageControl.snp.makeConstraints { make in
|
|
|
+ make.centerX.equalToSuperview()
|
|
|
+ make.bottom.equalToSuperview().offset(-8)
|
|
|
+ make.height.equalTo(10)
|
|
|
+ }
|
|
|
+
|
|
|
+ return bannerView
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
#if DEBUG
|