Commit a7042762 authored by David黄金龙's avatar David黄金龙

完善 首页元素

parent c807f39e
...@@ -81,7 +81,9 @@ ...@@ -81,7 +81,9 @@
A5C5B2E82B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */; }; A5C5B2E82B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */; };
A5C5B2EA2B4ECA4D00A7C5D1 /* YHDavidModel0.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */; }; A5C5B2EA2B4ECA4D00A7C5D1 /* YHDavidModel0.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */; };
A5C5B2EE2B4F9B8800A7C5D1 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = A5C5B2ED2B4F9B8800A7C5D1 /* Localizable.xcstrings */; }; A5C5B2EE2B4F9B8800A7C5D1 /* Localizable.xcstrings in Resources */ = {isa = PBXBuildFile; fileRef = A5C5B2ED2B4F9B8800A7C5D1 /* Localizable.xcstrings */; };
A5C5B2F92B5515CE00A7C5D1 /* BsPageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2F82B5515CE00A7C5D1 /* BsPageContentView.swift */; }; A5C5B2F92B5515CE00A7C5D1 /* YHPageContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2F82B5515CE00A7C5D1 /* YHPageContentView.swift */; };
A5C5B2FB2B5535DF00A7C5D1 /* YHHomeBannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2FA2B5535DF00A7C5D1 /* YHHomeBannerView.swift */; };
A5C5B2FD2B55361700A7C5D1 /* YHBannerModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5C5B2FC2B55361700A7C5D1 /* YHBannerModel.swift */; };
A5D6AB1B2B46A1CC001C10A5 /* YHHomeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */; }; A5D6AB1B2B46A1CC001C10A5 /* YHHomeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */; };
A5D6AB1D2B46AAFB001C10A5 /* YHHomePageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */; }; A5D6AB1D2B46AAFB001C10A5 /* YHHomePageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
...@@ -197,7 +199,9 @@ ...@@ -197,7 +199,9 @@
A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDavidTestCollectionViewCell.swift; sourceTree = "<group>"; }; A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDavidTestCollectionViewCell.swift; sourceTree = "<group>"; };
A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDavidModel0.swift; sourceTree = "<group>"; }; A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHDavidModel0.swift; sourceTree = "<group>"; };
A5C5B2ED2B4F9B8800A7C5D1 /* Localizable.xcstrings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; }; A5C5B2ED2B4F9B8800A7C5D1 /* Localizable.xcstrings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json.xcstrings; path = Localizable.xcstrings; sourceTree = "<group>"; };
A5C5B2F82B5515CE00A7C5D1 /* BsPageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BsPageContentView.swift; sourceTree = "<group>"; }; A5C5B2F82B5515CE00A7C5D1 /* YHPageContentView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHPageContentView.swift; sourceTree = "<group>"; };
A5C5B2FA2B5535DF00A7C5D1 /* YHHomeBannerView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHHomeBannerView.swift; sourceTree = "<group>"; };
A5C5B2FC2B55361700A7C5D1 /* YHBannerModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = YHBannerModel.swift; sourceTree = "<group>"; };
A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeModel.swift; sourceTree = "<group>"; }; A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomeModel.swift; sourceTree = "<group>"; };
A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomePageViewModel.swift; sourceTree = "<group>"; }; A5D6AB1C2B46AAFB001C10A5 /* YHHomePageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHHomePageViewModel.swift; sourceTree = "<group>"; };
B6BB01E4C5DB87B66F0ECE84 /* Pods-galaxy.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-galaxy.release.xcconfig"; path = "Target Support Files/Pods-galaxy/Pods-galaxy.release.xcconfig"; sourceTree = "<group>"; }; B6BB01E4C5DB87B66F0ECE84 /* Pods-galaxy.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-galaxy.release.xcconfig"; path = "Target Support Files/Pods-galaxy/Pods-galaxy.release.xcconfig"; sourceTree = "<group>"; };
...@@ -590,6 +594,7 @@ ...@@ -590,6 +594,7 @@
A5ACE95A2B457128002C94D2 /* M */ = { A5ACE95A2B457128002C94D2 /* M */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A5C5B2FC2B55361700A7C5D1 /* YHBannerModel.swift */,
A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */, A5D6AB1A2B46A1CC001C10A5 /* YHHomeModel.swift */,
A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */, A5C5B2E92B4ECA4D00A7C5D1 /* YHDavidModel0.swift */,
); );
...@@ -599,7 +604,8 @@ ...@@ -599,7 +604,8 @@
A5ACE95B2B45712D002C94D2 /* V */ = { A5ACE95B2B45712D002C94D2 /* V */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
A5C5B2F82B5515CE00A7C5D1 /* BsPageContentView.swift */, A5C5B2FA2B5535DF00A7C5D1 /* YHHomeBannerView.swift */,
A5C5B2F82B5515CE00A7C5D1 /* YHPageContentView.swift */,
A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */, A530268F2B4E6F2700F35102 /* YHHomeCustomCell.swift */,
A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */, A5C5B2E72B4EC95600A7C5D1 /* YHDavidTestCollectionViewCell.swift */,
); );
...@@ -826,9 +832,11 @@ ...@@ -826,9 +832,11 @@
A5ACE9442B4564F7002C94D2 /* Array+Extension.swift in Sources */, A5ACE9442B4564F7002C94D2 /* Array+Extension.swift in Sources */,
0468D4282B50D4AF00CFB916 /* YHPrivacyAlertView.swift in Sources */, 0468D4282B50D4AF00CFB916 /* YHPrivacyAlertView.swift in Sources */,
A5ACE9522B4564F7002C94D2 /* YHIntelligentServiceViewController.swift in Sources */, A5ACE9522B4564F7002C94D2 /* YHIntelligentServiceViewController.swift in Sources */,
A5C5B2FD2B55361700A7C5D1 /* YHBannerModel.swift in Sources */,
A5ACE9462B4564F7002C94D2 /* BsHUDSquareBaseView.swift in Sources */, A5ACE9462B4564F7002C94D2 /* BsHUDSquareBaseView.swift in Sources */,
A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */, A5551FFE2B4C26CE00510980 /* YHBaseViewModel.swift in Sources */,
A5C5B2F92B5515CE00A7C5D1 /* BsPageContentView.swift in Sources */, A5C5B2F92B5515CE00A7C5D1 /* YHPageContentView.swift in Sources */,
A5C5B2FB2B5535DF00A7C5D1 /* YHHomeBannerView.swift in Sources */,
A5ACE94B2B4564F7002C94D2 /* BsHUDRotatingImageView.swift in Sources */, A5ACE94B2B4564F7002C94D2 /* BsHUDRotatingImageView.swift in Sources */,
A5ACE94F2B4564F7002C94D2 /* YhOverlayView.swift in Sources */, A5ACE94F2B4564F7002C94D2 /* YhOverlayView.swift in Sources */,
A53026902B4E6F2700F35102 /* YHHomeCustomCell.swift in Sources */, A53026902B4E6F2700F35102 /* YHHomeCustomCell.swift in Sources */,
......
...@@ -9,12 +9,71 @@ ...@@ -9,12 +9,71 @@
import UIKit import UIKit
import ESPullToRefresh import ESPullToRefresh
import JXSegmentedView import JXSegmentedView
import GKNavigationBarSwift
class YHDavidTestViewController: YHBaseViewController { class YHDavidTestViewController: YHBaseViewController {
lazy var descripeLable:UILabel = {
let label = UILabel()
label.text = "赴港攻略,当日往返无忧,这个季节风景..赴港攻略,当日往返无忧,这个季节风景"
label.textColor = UIColor(hexString:"#333333")
label.font = UIFont.systemFont(ofSize: 10)
label.numberOfLines = 2
label.lineBreakMode = .byTruncatingTail
return label
}()
lazy var headImageView:UIImageView = {
let imageV = UIImageView(image: UIImage(named: "home_person_icon"))
imageV.contentMode = .scaleAspectFill
return imageV
}()
lazy var nameLable:UILabel = {
let label = UILabel()
label.text = "Fiona"
label.textColor = UIColor(hexString:"#333333")
label.font = UIFont.systemFont(ofSize: 10)
return label
}()
lazy var dateLable:UILabel = {
let label = UILabel()
label.text = "12-12"
label.textColor = UIColor(hexString:"#333333")
label.font = UIFont.systemFont(ofSize: 10)
return label
}()
lazy var heartImageView:UIImageView = {
let imageV = UIImageView(image: UIImage(named: "home_red_heart"))
imageV.contentMode = .scaleAspectFill
return imageV
}()
lazy var numLable:UILabel = {
let label = UILabel()
label.text = "2000"
label.textColor = UIColor(hexString:"#333333")
label.font = UIFont.systemFont(ofSize: 14)
return label
}()
lazy var items = { lazy var items = {
return [AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高")] return [AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高")]
}() }()
private lazy var bannerView: YHHomeBannerView = {
let view = YHHomeBannerView()
return view
}()
lazy var myCollectView = { lazy var myCollectView = {
// 设置布局方向 // 设置布局方向
let flowLayout = UICollectionViewFlowLayout() let flowLayout = UICollectionViewFlowLayout()
...@@ -45,8 +104,8 @@ class YHDavidTestViewController: YHBaseViewController { ...@@ -45,8 +104,8 @@ class YHDavidTestViewController: YHBaseViewController {
super.viewDidLoad() super.viewDidLoad()
setupUI() setupUI()
view.backgroundColor = .mainColor//for test hjl view.backgroundColor = .white
// gk_navigationBar.isHidden = true gk_navigationBar.isHidden = true
} }
...@@ -66,8 +125,6 @@ extension YHDavidTestViewController { ...@@ -66,8 +125,6 @@ extension YHDavidTestViewController {
private func loadFakeData() { private func loadFakeData() {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) { DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
self.items.append(AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高"))
self.items.append(AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高"))
self.items.append(AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高")) self.items.append(AboutAdvantageItem(iconName: "about_match", title: "精准匹配", detail: "大数据精准匹配,专属方案获批率更高"))
self.myCollectView.es.stopLoadingMore() self.myCollectView.es.stopLoadingMore()
self.myCollectView.reloadData() self.myCollectView.reloadData()
...@@ -76,14 +133,76 @@ extension YHDavidTestViewController { ...@@ -76,14 +133,76 @@ extension YHDavidTestViewController {
func setupUI() { func setupUI() {
gk_navTitle = "David的测试UI" gk_navTitle = "David的测试UI"
view.backgroundColor = .white view.backgroundColor = .white
view.addSubview(bannerView)
let bannerHeight: CGFloat = 143/343 * (KScreenWidth - 16 * 2)
bannerView.snp.makeConstraints { make in
make.top.left.right.equalToSuperview()
make.height.equalTo(bannerHeight)
}
let subHoldView = UIView()
subHoldView.layer.backgroundColor = UIColor(red: 1, green: 1, blue: 1, alpha: 1).cgColor
subHoldView.layer.borderWidth = 0.5
subHoldView.layer.borderColor = UIColor(red: 0.798, green: 0.798, blue: 0.798, alpha: 1).cgColor
view.addSubview(subHoldView)
subHoldView.snp.makeConstraints { make in
make.top.equalTo(bannerView.snp.bottom).offset(2)
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
make.height.equalTo(87)
}
subHoldView.addSubview(descripeLable)
descripeLable.snp.makeConstraints { make in
make.top.equalToSuperview().offset(8)
make.left.equalToSuperview().offset(8)
make.right.equalToSuperview().offset(-8)
make.height.equalTo(30)
}
subHoldView.addSubview(headImageView)
headImageView.snp.makeConstraints { make in
make.top.equalTo(descripeLable.snp.bottom).offset(10)
make.left.equalTo(descripeLable.snp.left)
make.height.width.equalTo(25)
}
subHoldView.addSubview(nameLable)
nameLable.snp.makeConstraints { make in
make.top.equalTo(headImageView.snp.top)
make.left.equalTo(headImageView.snp.right).offset(5)
make.height.equalTo(12)
make.width.equalTo(50)
}
subHoldView.addSubview(dateLable)
dateLable.snp.makeConstraints { make in
make.top.equalTo(nameLable.snp.bottom).offset(2)
make.left.equalTo(nameLable.snp.left)
make.height.equalTo(12)
make.right.equalTo(nameLable.snp.right)
}
subHoldView.addSubview(numLable)
numLable.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-8)
make.height.equalTo(12)
make.centerY.equalTo(headImageView.snp.centerY)
}
subHoldView.addSubview(heartImageView)
heartImageView.snp.makeConstraints { make in
make.right.equalTo(numLable.snp.left).offset(-6)
make.height.width.equalTo(12)
make.centerY.equalTo(headImageView.snp.centerY)
}
view.addSubview(myCollectView) view.addSubview(myCollectView)
myCollectView.snp.makeConstraints { make in myCollectView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview() make.left.right.bottom.equalToSuperview()
make.top.equalToSuperview()//.offset(k_Height_NavigationtBarAndStatuBar) make.top.equalTo(subHoldView.snp.bottom).offset(10)//.offset(k_Height_NavigationtBarAndStatuBar)
} }
self.myCollectView.es.addPullToRefresh { self.myCollectView.es.addPullToRefresh {
......
...@@ -114,11 +114,11 @@ class YHHomeViewController: YHBaseViewController { ...@@ -114,11 +114,11 @@ class YHHomeViewController: YHBaseViewController {
}() }()
lazy var pageContentView: BsPageContentView = { lazy var pageContentView: YHPageContentView = {
self.arrItemVc.removeAll() self.arrItemVc.removeAll()
for model in arrItemTitles { for model in arrItemTitles {
let vc = YHDavidTestViewController() let vc = YHDavidTestViewController()
vc.view.backgroundColor = .brown // vc.view.backgroundColor = .brown
arrItemVc.append(vc) arrItemVc.append(vc)
// //滑动使用 // //滑动使用
...@@ -128,7 +128,7 @@ class YHHomeViewController: YHBaseViewController { ...@@ -128,7 +128,7 @@ class YHHomeViewController: YHBaseViewController {
} }
let frame = CGRect(x: 0, y: 0, width: UIDevice.kScreenW, height: myCellHeight) let frame = CGRect(x: 0, y: 0, width: UIDevice.kScreenW, height: myCellHeight)
let view = BsPageContentView.init(frame: frame, childVcs: arrItemVc, parentViewController: self) let view = YHPageContentView.init(frame: frame, childVcs: arrItemVc, parentViewController: self)
view.banScrollEnabled() view.banScrollEnabled()
view.delegate = self view.delegate = self
return view return view
...@@ -373,9 +373,9 @@ extension YHHomeViewController: JXSegmentedListContainerViewDataSource { ...@@ -373,9 +373,9 @@ extension YHHomeViewController: JXSegmentedListContainerViewDataSource {
// MARK: - BsPageContentViewDelegate // MARK: - BsPageContentViewDelegate
extension YHHomeViewController: BsPageContentViewDelegate { extension YHHomeViewController: YHPageContentViewDelegate {
func pageContentView(_ contentView: BsPageContentView, progress: CGFloat, sourceIndex: Int, targetIndex: Int) { func pageContentView(_ contentView: YHPageContentView, progress: CGFloat, sourceIndex: Int, targetIndex: Int) {
// self.pageTitleView.setTitleWithProgress(progress, sourceIndex: sourceIndex, targetIndex: targetIndex) // self.pageTitleView.setTitleWithProgress(progress, sourceIndex: sourceIndex, targetIndex: targetIndex)
printLog("-----progress:\(progress) sourceIndex:\(sourceIndex) targetIndex:\(targetIndex)") printLog("-----progress:\(progress) sourceIndex:\(sourceIndex) targetIndex:\(targetIndex)")
} }
......
//
// BsBannerModel.swift
// BaiSiSMApp
//
// Created by DAVID on 2022/11/16.
// Copyright © 2022 www.davidhuang.com. All rights reserved.
//
import Foundation
class YHBannerModel {
var title: String = "我是Title" //banner标题
var img_url: String = "https://upload-cdn.galaxy-immi.com/sell/test/1668772072522.jpg" //banner图片链接
var link_type: Int = 0 //跳转类型 0:不跳转 10 :跳转H5 20:跳转原生页面
var link_url: String = "" //跳转地址
required init() {}
}
//
// BsHomeBannerView.swift
// BaiSiSMApp
//
// Created by SJ on 2022/11/9.
// Copyright © 2022 www.davidhuang.com. All rights reserved.
//
import Foundation
import FSPagerView
import Kingfisher
import SwifterSwift
class YHHomeBannerView: UIView {
// MARK: - constant 常量
// 位置、大小、图片、文本
fileprivate var dataArr: [YHBannerModel] = [YHBannerModel(),YHBannerModel(),YHBannerModel(),YHBannerModel(),YHBannerModel()]
// MARK: - life cycle 生命周期
//工程的viewDidLoad、viewWillAppear、init、didReceiveMemoryWarning等方法都放在这里
override init(frame: CGRect) {
super.init(frame: frame)
initView()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// MARK: - view layout 子视图的布局
//界面布局
func initView() {
addSubview(bannerView)
bannerView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(10)
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(16)
make.right.equalToSuperview().offset(-16)
}
bannerView.addSubview(pageControl)
pageControl.snp.makeConstraints { make in
make.left.bottom.right.equalToSuperview()
make.height.equalTo(25)
}
setupPageControl()
bannerView.reloadData()
}
func setupPageControl() {
self.pageControl.numberOfPages = self.dataArr.count
self.pageControl.contentHorizontalAlignment = .center
self.pageControl.contentInsets = UIEdgeInsets(top: 0, left: 12, bottom: 10, right: 12)
let normalImage = UIImage(color: UIColor(hex: 0xff0000, alpha: 1.0), size: CGSize(width: 5, height: 5))//UIImage(color: UIColor(white: 1, alpha: 0.5), size: CGSize(width: 5, height: 5))
let selectImage = UIImage(color: .white, size: CGSize(width: 8, height: 5))
self.pageControl.setImage(normalImage, for: .normal)
self.pageControl.setImage(selectImage, for: .selected)
self.pageControl.interitemSpacing = 3
}
// public func refreshUI(_ arr: [YHBannerModel]) {
//
// let model : YHBannerModel = YHBannerModel()
// model.img_url = "https://upload-cdn.galaxy-immi.com/sell/test/1668772072522.jpg"
//
// model.link_type = 0
// model.title = "我是测试数据"
//
// let arr = [model,model,model,model,model]
//
// self.dataArr = arr
// setupPageControl()
// bannerView.reloadData()
// }
private lazy var bannerView: FSPagerView = {
let view = FSPagerView()
view.delegate = self
view.dataSource = self
view.automaticSlidingInterval = 3
view.register(FSPagerViewCell.self, forCellWithReuseIdentifier: "cell")
view.itemSize = FSPagerView.automaticSize
// view.layer.cornerRadius = 10
// view.layer.masksToBounds = true
view.interitemSpacing = 10
return view
}()
lazy var pageControl: FSPageControl = {
let view = FSPageControl()
return view
}()
}
// MARK: - delegate 具体到某个delegate,比如UITableViewDelegate
//代理或者数据源
// MARK: - FSPagerViewDelegate
extension YHHomeBannerView: FSPagerViewDataSource, FSPagerViewDelegate {
public func numberOfItems(in pagerView: FSPagerView) -> Int {
return self.dataArr.count
}
public func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
let image = UIImage(named: "default_placeholder_image")?.bs_scaled(toWidth: UIDevice.kScreenW - 16*2, opaque: false)
cell.imageView?.image = image
if index < dataArr.count {
let model = dataArr[index]
if let url = URL(string: model.img_url) {
cell.imageView?.kf.setImage(with: url)
}
cell.textLabel?.text = model.title
}
cell.imageView?.contentMode = .scaleAspectFill
// cell.imageView?.clipsToBounds = true
// cell.imageView?.layer.cornerRadius = 10
cell.backgroundColor = .commonColor3
cell.contentView.layer.shadowColor = UIColor.clear.cgColor
return cell
}
// MARK: - FSPagerView Delegate
func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
pagerView.deselectItem(at: index, animated: true)
pagerView.scrollToItem(at: index, animated: true)
if index >= dataArr.count {
return
}
let model = dataArr[index]
switch model.link_type {
case 10: //跳转H5
// let vc = BsWebViewController()
// vc.urlString = model.link_url
// UIViewController.navTopViewController?.navigationController?.pushViewController(vc, animated: true)
break
case 20: //跳转原生页面
if let vc = UIViewController.classFromString(model.link_url) {
UIViewController.navTopViewController?.navigationController?.pushViewController(vc, animated: true)
}
break
default:
break
}
}
func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
self.pageControl.currentPage = targetIndex
}
func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
self.pageControl.currentPage = pagerView.currentIndex
}
}
...@@ -8,20 +8,20 @@ ...@@ -8,20 +8,20 @@
import UIKit import UIKit
@objc public protocol BsPageContentViewDelegate : AnyObject { @objc public protocol YHPageContentViewDelegate : AnyObject {
func pageContentView(_ contentView : BsPageContentView, progress : CGFloat, sourceIndex : Int, targetIndex : Int) func pageContentView(_ contentView : YHPageContentView, progress : CGFloat, sourceIndex : Int, targetIndex : Int)
} }
private let ContentCellID = "BsContentCellID" private let ContentCellID = "BsContentCellID"
open class BsPageContentView: UIView { open class YHPageContentView: UIView {
// MARK: - 定义属性 // MARK: - 定义属性
fileprivate var childVcs : [UIViewController] fileprivate var childVcs : [UIViewController]
fileprivate weak var parentVC : UIViewController? fileprivate weak var parentVC : UIViewController?
fileprivate var startOffsetX : CGFloat = 0 fileprivate var startOffsetX : CGFloat = 0
fileprivate var isForbidScrollDelegate : Bool = false fileprivate var isForbidScrollDelegate : Bool = false
@objc public weak var delegate : BsPageContentViewDelegate? @objc public weak var delegate : YHPageContentViewDelegate?
public var isScrollEnabled: Bool? { public var isScrollEnabled: Bool? {
didSet { didSet {
...@@ -82,7 +82,7 @@ open class BsPageContentView: UIView { ...@@ -82,7 +82,7 @@ open class BsPageContentView: UIView {
} }
// MARK: - 设置UI界面 // MARK: - 设置UI界面
extension BsPageContentView { extension YHPageContentView {
fileprivate func setupUI() { fileprivate func setupUI() {
// 1.将所有的子控制器添加父控制器中 // 1.将所有的子控制器添加父控制器中
// for childVc in childVcs { // for childVc in childVcs {
...@@ -104,7 +104,7 @@ extension BsPageContentView { ...@@ -104,7 +104,7 @@ extension BsPageContentView {
// MARK: - 遵守UICollectionViewDataSource // MARK: - 遵守UICollectionViewDataSource
extension BsPageContentView : UICollectionViewDataSource { extension YHPageContentView : UICollectionViewDataSource {
public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { public func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return childVcs.count return childVcs.count
} }
...@@ -127,7 +127,7 @@ extension BsPageContentView : UICollectionViewDataSource { ...@@ -127,7 +127,7 @@ extension BsPageContentView : UICollectionViewDataSource {
} }
// MARK: - 遵守UICollectionViewDelegate // MARK: - 遵守UICollectionViewDelegate
extension BsPageContentView : UICollectionViewDelegate { extension YHPageContentView : UICollectionViewDelegate {
public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { public func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
...@@ -188,7 +188,7 @@ extension BsPageContentView : UICollectionViewDelegate { ...@@ -188,7 +188,7 @@ extension BsPageContentView : UICollectionViewDelegate {
// MARK: - 对外暴露的方法 // MARK: - 对外暴露的方法
extension BsPageContentView { extension YHPageContentView {
@objc public func setCurrentIndex(_ currentIndex : Int) { @objc public func setCurrentIndex(_ currentIndex : Int) {
// 1.记录需要进制执行代理方法 // 1.记录需要进制执行代理方法
......
...@@ -12,6 +12,5 @@ ...@@ -12,6 +12,5 @@
工程规则 工程规则
1、工程使用MVC架构: 创建模块代码的时候 一同创建 M、V、C文件夹 1、工程使用MVC架构: 创建模块代码的时候 一同创建 M、V、C 文件夹
2、pod 第三方文件 固定使用版本(pod search xxx 查询版本列表) 2、pod 第三方文件 固定使用版本(pod search xxx 查询版本列表)
3、
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment