Commit 0b152c38 authored by David黄金龙's avatar David黄金龙

首页 UI修改

parent 352fd929
......@@ -38,7 +38,6 @@
043D2C8A2C0EEF3F00172438 /* YHOrderSearchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043D2C892C0EEF3F00172438 /* YHOrderSearchViewController.swift */; };
043D2C8C2C0F037B00172438 /* YHServiceOrderSearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 043D2C8B2C0F037B00172438 /* YHServiceOrderSearchViewModel.swift */; };
044378A42BFC848C001F95AE /* loginBkg.mov in Resources */ = {isa = PBXBuildFile; fileRef = 044378A32BFC848C001F95AE /* loginBkg.mov */; };
044413FD2BC386DA00784A14 /* YHServiceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044413FC2BC386DA00784A14 /* YHServiceViewController.swift */; };
044413FF2BC391F000784A14 /* YHServiceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044413FE2BC391F000784A14 /* YHServiceListViewController.swift */; };
044414012BC3979800784A14 /* YHServerHKLifeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044414002BC3979800784A14 /* YHServerHKLifeViewController.swift */; };
044414032BC39B8D00784A14 /* YHServerTableHeadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 044414022BC39B8D00784A14 /* YHServerTableHeadView.swift */; };
......@@ -619,7 +618,6 @@
043D2C892C0EEF3F00172438 /* YHOrderSearchViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHOrderSearchViewController.swift; sourceTree = "<group>"; };
043D2C8B2C0F037B00172438 /* YHServiceOrderSearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceOrderSearchViewModel.swift; sourceTree = "<group>"; };
044378A32BFC848C001F95AE /* loginBkg.mov */ = {isa = PBXFileReference; lastKnownFileType = video.quicktime; path = loginBkg.mov; sourceTree = "<group>"; };
044413FC2BC386DA00784A14 /* YHServiceViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceViewController.swift; sourceTree = "<group>"; };
044413FE2BC391F000784A14 /* YHServiceListViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServiceListViewController.swift; sourceTree = "<group>"; };
044414002BC3979800784A14 /* YHServerHKLifeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServerHKLifeViewController.swift; sourceTree = "<group>"; };
044414022BC39B8D00784A14 /* YHServerTableHeadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = YHServerTableHeadView.swift; sourceTree = "<group>"; };
......@@ -2824,7 +2822,6 @@
A5ACE9192B4564F7002C94D2 /* YHServiceCenterMainViewController.swift */,
04E41DE72BD240570077EAE3 /* YHOrderDetailViewController.swift */,
048787D42BCE880B0036E221 /* YHServiceOrderListViewController.swift */,
044413FC2BC386DA00784A14 /* YHServiceViewController.swift */,
04F5F85F2C1944D5004A463C /* YHHKCenterViewController.swift */,
044413FE2BC391F000784A14 /* YHServiceListViewController.swift */,
04F5F8612C1945C0004A463C /* YHHKIdentityCardViewController.swift */,
......@@ -3642,7 +3639,6 @@
045EEE822B9F171A0022A143 /* YHPersonInfoIdentityCardModel.swift in Sources */,
045EEE952B9F171A0022A143 /* YHPreviewInfoCertificateInformationItemsView.swift in Sources */,
044D0C042C2180B700C5CF5E /* YHInformationAuthorizationStepTwoViewController.swift in Sources */,
044413FD2BC386DA00784A14 /* YHServiceViewController.swift in Sources */,
045EEEBB2B9F171A0022A143 /* YHWorkIntroductionTableViewCell.swift in Sources */,
045EEEED2B9F171A0022A143 /* YHParentInfoVC.swift in Sources */,
04A7BC912B6B7B89000E8D47 /* YHTwoOptionAlertView.swift in Sources */,
......
......@@ -160,7 +160,8 @@ extension AppDelegate {
func setupRootVCWithTabBar() {
// gk_navigationBar.isHidden = false
let tabBarController = YHTabBarViewController()
let homeVC = YHHomePageViewController()
// let homeVC = YHHomePageViewController() //for test hjl
let homeVC = YHHomeHoldViewPageViewController()
tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceCenterMainViewController())
......
......@@ -9,9 +9,9 @@
import UIKit
import JXSegmentedView
//MARK: - 生命周期函数 及变量
class YHHomeHoldViewPageViewController: YHBaseViewController {
var defaltIndex: Int = 0
let friendViewModel = YHMatchUserViewModel()
let arrItemTitles = ["推荐","身份","生活"]
var arrItemVCs : [YHBaseViewController] = []
......@@ -39,9 +39,10 @@ class YHHomeHoldViewPageViewController: YHBaseViewController {
return dataSource
}()
lazy var bgImgV:UIImageView = {
let bg = UIImageView(image: UIImage(named: "people_match_bg"))
return bg
//首页内容ViewController
lazy var homePageVC: YHHomePageViewController = {
let vc = YHHomePageViewController()
return vc
}()
//分类title 所对应的VC
......@@ -51,49 +52,27 @@ class YHHomeHoldViewPageViewController: YHBaseViewController {
return view
}()
lazy var friendsBtn:UIButton = {
let btn = UIButton()
btn.setImage(UIImage(named: "people_friends_btn"), for: .normal)
btn.setTitle("好友", for: .normal)
btn.setTitleColor(UIColor.white, for: .normal)
btn.iconInLeft(spacing: 4.0)
btn.titleLabel?.font = UIFont.PFSC_R(ofSize:15)
btn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
btn.addTarget(self, action: #selector(didFriendsBtnClicked), for: .touchUpInside)
return btn
}()
let unreadHeight = 16.0
lazy var unreadLabel:UILabel = {
let label = UILabel()
label.textColor = .white
label.textAlignment = .center
label.backgroundColor = .failColor
label.font = .PFSC_M(ofSize: 10)
label.layer.cornerRadius = unreadHeight/2.0
label.clipsToBounds = true
label.isHidden = true
return label
}()
var unreadCount:Int = 0 {
didSet {
self.updateUnreadCount(self.unreadCount)
}
}
var tapTimestamp : CFAbsoluteTime = -10.0
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestFriendRequest()
//处于第一个item的时候,才允许屏幕边缘手势返回
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
YHOSSManager.share.getOSSID()
getTotalUnreadMsgCount()
updateDefaultSearchKeyWord()
requestAppNewVersion()
}
override func viewWillDisappear(_ animated: Bool) {
......@@ -106,72 +85,168 @@ class YHHomeHoldViewPageViewController: YHBaseViewController {
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
segmentedView.frame = CGRect(x: 0, y: k_Height_safeAreaInsetsTop(), width: view.bounds.size.width, height: 48)
listContainerView.frame = CGRect(x: 0, y: k_Height_safeAreaInsetsTop() + 48, width: view.bounds.size.width, height: view.bounds.size.height - 48 - k_Height_safeAreaInsetsTop())
let offy = k_Height_safeAreaInsetsTop() + 6 + YHHomeSearchView.viewH + 6
segmentedView.frame = CGRect(x: 0, y: offy, width: view.bounds.size.width, height: 48)
let offy1 = offy + 48 + 8
listContainerView.frame = CGRect(x: 0, y: offy1, width: view.bounds.size.width, height: view.bounds.size.height - offy1 - k_Height_TabBar)
// listContainerView.backgroundColor = .red//for test hjl
// homePageVC.homeCollectView.backgroundColor = .yellow//for test hjl
// homePageVC.view.backgroundColor = .purple//for test hjl
}
lazy var searchView: YHHomeSearchView = {
let view = YHHomeSearchView()
let tap = UITapGestureRecognizer(target: self, action: #selector(didSearchBarClicked))
view.addGestureRecognizer(tap)
return view
}()
lazy var msgUnreadView:YHMessageBellView = {
let view = YHMessageBellView.bellView()
return view
}()
lazy var msgViewModel:YHMsgViewModel = {
let vm = YHMsgViewModel()
return vm
}()
}
//内部函数
//MARK: - 内部函数
extension YHHomeHoldViewPageViewController {
func updateUnreadCount(_ count : Int) {
self.unreadLabel.isHidden = (count <= 0)
if 0 < count && count < 100 {
self.unreadLabel.text = "\(count)"
} else if count >= 100 {
self.unreadLabel.text = "99+"
}
var width = unreadHeight
var leftMargin = -8
if 10 <= count && count < 100 {
width = 22.0
} else if count >= 100 {
width = 30.0
leftMargin = -14
}
self.unreadLabel.snp.updateConstraints { make in
make.width.equalTo(width)
make.left.equalTo(self.friendsBtn.snp.right).offset(leftMargin)
@objc func didRefreshMessageCount() {
getTotalUnreadMsgCount()
}
func requestAppNewVersion() {
if YHConfigManager.shared.loadNewDataFlag == false {
YHConfigManager.shared.loadConfigData {
[weak self] in
guard let self = self else { return }
self.showNewVersionAlertView()
}
} else {
showNewVersionAlertView()
}
}
@objc func didBackBtnClicked() {
self.navigationController?.popViewController(animated: true)
func showNewVersionAlertView() {
let isNeedShowAlert = YHAppVersionManager.shared.needShowAlertViewOfSuggestVersionUpdate()
if isNeedShowAlert {
if let configModel = YHConfigManager.shared.reqVM.configModel {
let alertView = YHFindAppNewVersionView.alertView(version: configModel.max_version)
let arr = configModel.suggest_updating_msg.components(separatedBy: "$")
alertView.updateContentArray(arr)
alertView.show()
}
}
}
@objc func didFriendsBtnClicked() {
// 请求未读消息总数
@objc func getTotalUnreadMsgCount() {
if !YHLoginManager.shared.isLogin() {
YHOneKeyLoginManager.shared.oneKeyLogin()
return
}
let vc = YHMyGoodFriendsVC()
self.msgViewModel.requestTotalUnreadMsgCount {
[weak self] success, error in
guard let self = self else { return }
DispatchQueue.main.async {
self.msgUnreadView.unreadCount = self.msgViewModel.unreadTotalCount
}
}
}
@objc func clearUnreadBadge() {
DispatchQueue.main.async {
self.msgUnreadView.unreadCount = 0
}
}
@objc func loginSuccess() {
homePageVC.getData()
}
@objc func logoutSuccess() {
self.msgUnreadView.unreadCount = 0
homePageVC.getData()
}
@objc func revMsg() {
homePageVC.requestOrder()
}
func updateDefaultSearchKeyWord() {
var placeHolder = "香港身份"
if isHaveLocalSearchRecords() {
let latestValidSearchWord = getLatestValidSearchWord()
if !latestValidSearchWord.isEmpty {
placeHolder = latestValidSearchWord
}
}
searchView.placeHolder = placeHolder
}
@objc func didSearchBarClicked() {
let vc = YHSearchInfomationVC()
vc.searchPlaceHolder = searchView.placeHolder
printLog("placeHolder: \(searchView.placeHolder)")
self.navigationController?.pushViewController(vc)
}
func setupUI() {
gk_navBarAlpha = 0
gk_navigationBar.isHidden = false
gk_navigationBar.isHidden = true
self.view.backgroundColor = .white
self.view.addSubview(bgImgV)
self.bgImgV.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
view.backgroundColor = .white
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(goActivityVC), name: YhConstant.YhNotification.goActivityVCNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(revMsg), name: YhConstant.YhNotification.didRevMsgNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(clearUnreadBadge), name: YhConstant.YhNotification.didMarkAllMessagesReadedNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didRefreshMessageCount), name: YhConstant.YhNotification.didRequestUnreadMsgTotalCountNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(goConnectionVC), name: YhConstant.YhNotification.goConnectionVCNotifiction, object: nil)
for i in 0..<arrItemTitles.count {
if i != 0 {
let vc = YHActivityListViewController()
if i == 0 {
//首页
let vc = homePageVC
arrItemVCs.append(vc)
} else {
let vc = YHMatchUserViewController()
} else if i == 1 {
//身份
let vc = YHServiceListViewController()
arrItemVCs.append(vc)
} else if i == 2 {
//生活
let vc = YHServerHKLifeViewController()
arrItemVCs.append(vc)
}
}
view.addSubview(searchView)
searchView.snp.makeConstraints { make in
make.top.equalTo(k_Height_safeAreaInsetsTop() + 6)
make.left.equalTo(20)
make.height.equalTo(YHHomeSearchView.viewH)
}
view.addSubview(msgUnreadView)
msgUnreadView.snp.makeConstraints { make in
make.width.equalTo(YHMessageBellView.width)
make.height.equalTo(YHMessageBellView.height)
make.left.equalTo(searchView.snp.right)
make.right.equalToSuperview()
make.centerY.equalTo(searchView)
}
//segmentedViewDataSource一定要通过属性强持有!!!!!!!!!
segmentedView.dataSource = segmentedDataSource
view.addSubview(segmentedView)
......@@ -179,95 +254,27 @@ extension YHHomeHoldViewPageViewController {
segmentedView.listContainer = listContainerView
view.addSubview(listContainerView)
//分类Title
segmentedView.dataSource = segmentedDataSource
segmentedView.delegate = self
//配置指示器
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorHeight = 2
indicator.indicatorCornerRadius = 0.0
indicator.indicatorColor = UIColor.white
segmentedView.indicators = [indicator]
segmentedView.defaultSelectedIndex = defaltIndex
self.view.addSubview(friendsBtn)
friendsBtn.snp.makeConstraints { make in
make.width.equalTo(54.0)
make.height.equalTo(21)
make.right.equalTo(-20)
make.top.equalTo(12+k_Height_safeAreaInsetsTop())
}
self.friendsBtn.addSubview(self.unreadLabel)
self.unreadLabel.snp.makeConstraints { make in
make.width.height.equalTo(unreadHeight)
make.left.equalTo(self.friendsBtn.snp.right).offset(-8)
make.top.equalTo(self.friendsBtn.snp.top).offset(-8)
}
}
func requestFriendRequest() {
if YHLoginManager.shared.isLogin() {
self.friendViewModel.getMyFriendList { success, error in
let unreadCount = self.friendViewModel.friendListModel.applyFriends.count
self.unreadCount = unreadCount
self.friendsBtn.isHidden = self.segmentedView.selectedIndex != 0
}
} else {
self.unreadCount = 0
}
}
@objc func goActivityVC() {
segmentedView.selectItemAt(index: 1)
}
@objc func goConnectionVC() {
segmentedView.selectItemAt(index: 0)
}
func jumpToItemIndex(itemIndex : Int) {
self.segmentedView.selectItemAt(index: itemIndex)
}
}
//JXSegmentedViewDelegate
//MARK: - JXSegmentedViewDelegate
extension YHHomeHoldViewPageViewController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
// if segmentedView.selectedIndex == 0 {
// bgImgV.isHidden = false
// friendsBtn.isHidden = false
// segmentedDataSource.titleNormalColor = UIColor(hex: 0xFFFFFF, alpha: 0.6)
// segmentedDataSource.titleSelectedColor = .white
// let indicator = JXSegmentedIndicatorLineView()
// indicator.indicatorWidth = 16
// indicator.indicatorHeight = 2
// indicator.indicatorCornerRadius = 0.0
// indicator.indicatorColor = UIColor.white
// segmentedView.indicators = [indicator]
// } else {
// bgImgV.isHidden = true
// friendsBtn.isHidden = true
// segmentedDataSource.titleNormalColor = UIColor.yhGreyColor
// segmentedDataSource.titleSelectedColor = UIColor.mainTextColor
// let indicator = JXSegmentedIndicatorLineView()
// indicator.indicatorWidth = 16
// indicator.indicatorHeight = 2
// indicator.indicatorCornerRadius = 0.0
// indicator.indicatorColor = UIColor.brandMainColor
// segmentedView.indicators = [indicator]
// }
// segmentedView.dataSource = segmentedDataSource
self.segmentedView.reloadDataWithoutListContainer()
}
}
//JXSegmentedListContainerViewDataSource
//MARK: - JXSegmentedListContainerViewDataSource
extension YHHomeHoldViewPageViewController: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
......@@ -280,3 +287,40 @@ extension YHHomeHoldViewPageViewController: JXSegmentedListContainerViewDataSour
return arrItemVCs[index] as! JXSegmentedListContainerViewListDelegate
}
}
//MARK: - UITabBarControllerDelegate
extension YHHomeHoldViewPageViewController : UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
let doubleTapInterval : CGFloat = 0.3
if tabBarController.selectedIndex == 0 {
let timestamp = CFAbsoluteTimeGetCurrent()
printLog(timestamp - self.tapTimestamp)
if timestamp - self.tapTimestamp < doubleTapInterval {
homePageVC.goTop()
}
self.tapTimestamp = timestamp
}
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let index = tabBarController.viewControllers?.firstIndex(of: viewController) else {
return false
}
if index == 1 {
if YHLoginManager.shared.isLogin() {
return true
} else {
YHOneKeyLoginManager.shared.oneKeyLogin()
YHLoginManager.shared.loginSuccessActionBlock = {[weak self] in
guard self != nil else { return }
tabBarController.selectedIndex = index
YHLoginManager.shared.loginSuccessActionBlock = nil
}
return false
}
}
return true
}
}
......@@ -10,10 +10,10 @@ import UIKit
import ESPullToRefresh
import GKNavigationBarSwift
import SmartCodable
let kShowAlertOfSuggestLatestVersion = "show_alert_suggest_latest_version"
import JXSegmentedView
class YHHomePageViewController: YHBaseViewController {
lazy var viewModel : YHHomePageViewModel = {
let viewModel = YHHomePageViewModel()
return viewModel
......@@ -22,6 +22,7 @@ class YHHomePageViewController: YHBaseViewController {
let msgViewModel: YHMsgViewModel = YHMsgViewModel()
let serviceCenterMainReqVM : YHServiceCenterMainViewModel = YHServiceCenterMainViewModel()
var homeHeaderViewHeight = YHHomeHeadView.fixViewH
var needReloadDataFlag : Bool = false
......@@ -45,7 +46,6 @@ class YHHomePageViewController: YHBaseViewController {
override func viewDidLoad() {
super.viewDidLoad()
//0、
setupUI()
......@@ -56,17 +56,13 @@ class YHHomePageViewController: YHBaseViewController {
getData()
}
@objc func didRefreshMessageCount() {
getTotalUnreadMsgCount()
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
requestAppNewVersion()
// requestAppNewVersion()
//获取OSS密钥
YHOSSManager.share.getOSSID()
updateDefaultSearchKeyWord()
getTotalUnreadMsgCount()
// YHOSSManager.share.getOSSID()
// updateDefaultSearchKeyWord()
// getTotalUnreadMsgCount()
if needReloadDataFlag {
needReloadDataFlag = false
......@@ -74,69 +70,37 @@ class YHHomePageViewController: YHBaseViewController {
}
}
lazy var searchView: YHHomeSearchView = {
let view = YHHomeSearchView()
let tap = UITapGestureRecognizer(target: self, action: #selector(didSearchBarClicked))
view.addGestureRecognizer(tap)
return view
}()
lazy var msgUnreadView:YHMessageBellView = {
let view = YHMessageBellView.bellView()
return view
}()
// lazy var searchView: YHHomeSearchView = {
// let view = YHHomeSearchView()
// let tap = UITapGestureRecognizer(target: self, action: #selector(didSearchBarClicked))
// view.addGestureRecognizer(tap)
// return view
// }()
//
// lazy var msgUnreadView:YHMessageBellView = {
// let view = YHMessageBellView.bellView()
// return view
// }()
lazy var homeHeaderView: YHHomeHeadView = {
let view = YHHomeHeadView()
return view
}()
var tapTimestamp : CFAbsoluteTime = -10.0
func updateDefaultSearchKeyWord() {
var placeHolder = "香港身份"
if isHaveLocalSearchRecords() {
let latestValidSearchWord = getLatestValidSearchWord()
if !latestValidSearchWord.isEmpty {
placeHolder = latestValidSearchWord
}
}
searchView.placeHolder = placeHolder
}
// 请求订单数据
func requestOrder() {
if YHLoginManager.shared.isLogin() == false {
return
}
self.serviceCenterMainReqVM.getContactList {
[weak self] success, error in
guard let self = self else { return }
let isShow = self.serviceCenterMainReqVM.arrContactList.count > 0
if isShow {
self.viewModel.getBasicInfoForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.dataModelForBasicInfo = self.viewModel.signerModel
} else {
}
self.viewModel.getLastTwoMessagesForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.arrLastTwoMessage = self.viewModel.arrLastTwoMessages
self.homeHeaderView.updateSubViewsConstraints()
} else {
}
self.showOrderTipsView(isShow)
}
}
} else {
self.showOrderTipsView(isShow)
}
}
}
// var tapTimestamp : CFAbsoluteTime = -10.0
}
private extension YHHomePageViewController {
// func updateDefaultSearchKeyWord() {
// var placeHolder = "香港身份"
// if isHaveLocalSearchRecords() {
// let latestValidSearchWord = getLatestValidSearchWord()
// if !latestValidSearchWord.isEmpty {
// placeHolder = latestValidSearchWord
// }
// }
//// searchView.placeHolder = placeHolder
// }
// 是否展示订单提示视图
func showOrderTipsView(_ show:Bool) {
......@@ -172,9 +136,11 @@ class YHHomePageViewController: YHBaseViewController {
}
self.homeCollectView.reloadData()
}
}
private extension YHHomePageViewController {
// @objc func didRefreshMessageCount() {
// getTotalUnreadMsgCount()
// }
func addDefaultData() {
homeHeaderView.homeBannerView.dataArr = getCacheDataForBanner()
getCacheDataForHomeNewsData()
......@@ -184,17 +150,14 @@ private extension YHHomePageViewController {
needReloadDataFlag = true
}
@objc func didSearchBarClicked() {
let vc = YHSearchInfomationVC()
vc.searchPlaceHolder = searchView.placeHolder
printLog("placeHolder: \(searchView.placeHolder)")
self.navigationController?.pushViewController(vc)
}
// @objc func didSearchBarClicked() {
// let vc = YHSearchInfomationVC()
// vc.searchPlaceHolder = searchView.placeHolder
// printLog("placeHolder: \(searchView.placeHolder)")
// self.navigationController?.pushViewController(vc)
// }
func getData() {
loadFirstData()
getHomeBannerData()
}
//获取缓存的 banner数据
func getCacheDataForBanner() -> [YHBannerModel] {
......@@ -312,44 +275,46 @@ private extension YHHomePageViewController {
}
func setupUI() {
gk_navigationBar.isHidden = false
gk_navigationBar.isHidden = true
view.backgroundColor = .white
NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(revMsg), name: YhConstant.YhNotification.didRevMsgNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(clearUnreadBadge), name: YhConstant.YhNotification.didMarkAllMessagesReadedNotifiction, object: nil)
// gk_navigationBar.isHidden = false
// gk_navigationBar.isHidden = true
// view.backgroundColor = .white
// NotificationCenter.default.addObserver(self, selector: #selector(loginSuccess), name: YhConstant.YhNotification.didLoginSuccessNotifiction, object: nil)
//
// NotificationCenter.default.addObserver(self, selector: #selector(logoutSuccess), name: YhConstant.YhNotification.didLogoutSuccessNotifiction, object: nil)
//
// NotificationCenter.default.addObserver(self, selector: #selector(revMsg), name: YhConstant.YhNotification.didRevMsgNotifiction, object: nil)
//
// NotificationCenter.default.addObserver(self, selector: #selector(clearUnreadBadge), name: YhConstant.YhNotification.didMarkAllMessagesReadedNotifiction, object: nil)
//
//
NotificationCenter.default.addObserver(self, selector: #selector(clickMsgitem), name: YhConstant.YhNotification.clickHomeMsgNotifiction, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(didRefreshMessageCount), name: YhConstant.YhNotification.didRequestUnreadMsgTotalCountNotification, object: nil)
view.addSubview(searchView)
searchView.snp.makeConstraints { make in
make.top.equalTo(k_Height_safeAreaInsetsTop() + 6)
make.left.equalTo(20)
make.height.equalTo(YHHomeSearchView.viewH)
}
view.addSubview(msgUnreadView)
msgUnreadView.snp.makeConstraints { make in
make.width.equalTo(YHMessageBellView.width)
make.height.equalTo(YHMessageBellView.height)
make.left.equalTo(searchView.snp.right)
make.right.equalToSuperview()
make.centerY.equalTo(searchView)
}
//
// NotificationCenter.default.addObserver(self, selector: #selector(didRefreshMessageCount), name: YhConstant.YhNotification.didRequestUnreadMsgTotalCountNotification, object: nil)
// view.addSubview(searchView)
// searchView.snp.makeConstraints { make in
// make.top.equalTo(k_Height_safeAreaInsetsTop() + 6)
// make.left.equalTo(20)
// make.height.equalTo(YHHomeSearchView.viewH)
// }
//
// view.addSubview(msgUnreadView)
// msgUnreadView.snp.makeConstraints { make in
// make.width.equalTo(YHMessageBellView.width)
// make.height.equalTo(YHMessageBellView.height)
// make.left.equalTo(searchView.snp.right)
// make.right.equalToSuperview()
// make.centerY.equalTo(searchView)
// }
view.addSubview(homeCollectView)
homeCollectView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.top.equalTo(searchView.snp.bottom).offset(20)
make.bottom.equalToSuperview().offset(-k_Height_TabBar)
// make.top.equalTo(searchView.snp.bottom).offset(20)
make.top.equalToSuperview()
// make.bottom.equalToSuperview().offset(-k_Height_TabBar)
make.bottom.equalToSuperview()
}
homeHeaderView.frame = CGRect(x: 20, y: -YHHomeHeadView.fixViewH, width: KScreenWidth - 40, height: YHHomeHeadView.fixViewH)
......@@ -372,19 +337,55 @@ private extension YHHomePageViewController {
self.loadMoreData()
}
}
@objc func loginSuccess() {
getData()
}
//MARK: - public方法
extension YHHomePageViewController {
func goTop() {
self.homeCollectView.setContentOffset(CGPoint(x: 0, y: -homeHeaderViewHeight), animated: true)
}
@objc func logoutSuccess() {
self.msgUnreadView.unreadCount = 0
getData()
func getData() {
loadFirstData()
getHomeBannerData()
}
@objc func revMsg() {
requestOrder()
// 请求订单数据
func requestOrder() {
if YHLoginManager.shared.isLogin() == false {
return
}
self.serviceCenterMainReqVM.getContactList {
[weak self] success, error in
guard let self = self else { return }
let isShow = self.serviceCenterMainReqVM.arrContactList.count > 0
if isShow {
self.viewModel.getBasicInfoForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.dataModelForBasicInfo = self.viewModel.signerModel
} else {
}
self.viewModel.getLastTwoMessagesForSigner { success, error in
if success {
self.homeHeaderView.orderTipsView.arrLastTwoMessage = self.viewModel.arrLastTwoMessages
self.homeHeaderView.updateSubViewsConstraints()
} else {
}
self.showOrderTipsView(isShow)
}
}
} else {
self.showOrderTipsView(isShow)
}
}
}
}
extension YHHomePageViewController: UICollectionViewDelegate, UICollectionViewDataSource {
......@@ -440,96 +441,96 @@ extension YHHomePageViewController : CollectionViewWaterfallLayoutDelegate {
}
}
extension YHHomePageViewController : UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
let doubleTapInterval : CGFloat = 0.3
if tabBarController.selectedIndex == 0 {
let timestamp = CFAbsoluteTimeGetCurrent()
printLog(timestamp - self.tapTimestamp)
if timestamp - self.tapTimestamp < doubleTapInterval {
self.homeCollectView.setContentOffset(CGPoint(x: 0, y: -homeHeaderViewHeight), animated: true)
}
self.tapTimestamp = timestamp
}
// else if tabBarController.selectedIndex == 2 {
// // 点击消息tab 清空应用icon未读数
// UIApplication.shared.applicationIconBadgeNumber = 0
//extension YHHomePageViewController : UITabBarControllerDelegate {
//
// func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
// let doubleTapInterval : CGFloat = 0.3
//
// if tabBarController.selectedIndex == 0 {
// let timestamp = CFAbsoluteTimeGetCurrent()
// printLog(timestamp - self.tapTimestamp)
// if timestamp - self.tapTimestamp < doubleTapInterval {
// self.homeCollectView.setContentOffset(CGPoint(x: 0, y: -homeHeaderViewHeight), animated: true)
// }
// self.tapTimestamp = timestamp
//
// }
//// else if tabBarController.selectedIndex == 2 {
//// // 点击消息tab 清空应用icon未读数
//// UIApplication.shared.applicationIconBadgeNumber = 0
//// }
// }
//
//
// func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
// guard let index = tabBarController.viewControllers?.firstIndex(of: viewController) else {
// return false
// }
}
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
guard let index = tabBarController.viewControllers?.firstIndex(of: viewController) else {
return false
}
if index == 1 {
if YHLoginManager.shared.isLogin() {
return true
} else {
YHOneKeyLoginManager.shared.oneKeyLogin()
YHLoginManager.shared.loginSuccessActionBlock = {[weak self] in
guard self != nil else { return }
tabBarController.selectedIndex = index
YHLoginManager.shared.loginSuccessActionBlock = nil
}
return false
}
}
return true
}
}
// if index == 1 {
// if YHLoginManager.shared.isLogin() {
// return true
// } else {
// YHOneKeyLoginManager.shared.oneKeyLogin()
// YHLoginManager.shared.loginSuccessActionBlock = {[weak self] in
// guard self != nil else { return }
// tabBarController.selectedIndex = index
// YHLoginManager.shared.loginSuccessActionBlock = nil
// }
// return false
// }
// }
// return true
// }
//}
extension YHHomePageViewController {
func requestAppNewVersion() {
if YHConfigManager.shared.loadNewDataFlag == false {
YHConfigManager.shared.loadConfigData {
[weak self] in
guard let self = self else { return }
self.showNewVersionAlertView()
}
} else {
showNewVersionAlertView()
}
}
func showNewVersionAlertView() {
let isNeedShowAlert = YHAppVersionManager.shared.needShowAlertViewOfSuggestVersionUpdate()
if isNeedShowAlert {
if let configModel = YHConfigManager.shared.reqVM.configModel {
let alertView = YHFindAppNewVersionView.alertView(version: configModel.max_version)
let arr = configModel.suggest_updating_msg.components(separatedBy: "$")
alertView.updateContentArray(arr)
alertView.show()
}
}
}
// func requestAppNewVersion() {
// if YHConfigManager.shared.loadNewDataFlag == false {
// YHConfigManager.shared.loadConfigData {
// [weak self] in
// guard let self = self else { return }
// self.showNewVersionAlertView()
// }
// } else {
// showNewVersionAlertView()
// }
// }
//
// func showNewVersionAlertView() {
// let isNeedShowAlert = YHAppVersionManager.shared.needShowAlertViewOfSuggestVersionUpdate()
// if isNeedShowAlert {
// if let configModel = YHConfigManager.shared.reqVM.configModel {
// let alertView = YHFindAppNewVersionView.alertView(version: configModel.max_version)
// let arr = configModel.suggest_updating_msg.components(separatedBy: "$")
// alertView.updateContentArray(arr)
// alertView.show()
// }
// }
// }
}
extension YHHomePageViewController {
// 请求未读消息总数
@objc func getTotalUnreadMsgCount() {
if !YHLoginManager.shared.isLogin() {
return
}
self.msgViewModel.requestTotalUnreadMsgCount {
[weak self] success, error in
guard let self = self else { return }
DispatchQueue.main.async {
self.msgUnreadView.unreadCount = self.msgViewModel.unreadTotalCount
}
}
}
@objc func clearUnreadBadge() {
DispatchQueue.main.async {
self.msgUnreadView.unreadCount = 0
}
}
// @objc func getTotalUnreadMsgCount() {
// if !YHLoginManager.shared.isLogin() {
// return
// }
//
// self.msgViewModel.requestTotalUnreadMsgCount {
// [weak self] success, error in
// guard let self = self else { return }
// DispatchQueue.main.async {
// self.msgUnreadView.unreadCount = self.msgViewModel.unreadTotalCount
// }
// }
// }
//
// @objc func clearUnreadBadge() {
// DispatchQueue.main.async {
// self.msgUnreadView.unreadCount = 0
// }
// }
func scrollViewDidScroll(_ scrollView: UIScrollView) {
......@@ -547,3 +548,11 @@ extension YHHomePageViewController {
}
}
}
//JXSegmentedListContainerViewListDelegate
extension YHHomePageViewController: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
}
}
......@@ -173,7 +173,8 @@ private extension YHStartPageViewController {
func setupRootVC() {
gk_navigationBar.isHidden = false
let tabBarController = YHTabBarViewController()
let homeVC = YHHomePageViewController()
// let homeVC = YHHomePageViewController()
let homeVC = YHHomeHoldViewPageViewController()
tabBarController.delegate = homeVC
let v0 = YHNavigationController(rootVC:homeVC)
let v1 = YHNavigationController(rootVC:YHServiceCenterMainViewController())
......
......@@ -208,6 +208,8 @@ extension YHServiceListViewController : CollectionViewWaterfallLayoutDelegate {
}
}
//JXSegmentedListContainerViewListDelegate
extension YHServiceListViewController: JXSegmentedListContainerViewListDelegate {
func listView() -> UIView {
return view
......
//
// YHServiceViewController.swift
// galaxy
//
// Created by EDY on 2024/4/8.
// Copyright © 2024 https://www.galaxy-immi.com. All rights reserved.
//
import UIKit
import JXSegmentedView
class YHServiceViewController: YHBaseViewController, UIGestureRecognizerDelegate {
var defaltIndex: Int = 0
let arrItemTitles = ["香港身份","香港生活"]
var arrItemVCs : [YHBaseViewController] = []
var segmentedView : JXSegmentedView = JXSegmentedView(frame: CGRect(x: 0, y: k_Height_safeAreaInsetsTop(), width: KScreenWidth, height: 48))
lazy var segmentedDataSource: JXSegmentedBaseDataSource = {
let dataSource = JXSegmentedTitleDataSource()
dataSource.isTitleColorGradientEnabled = true
dataSource.titles = arrItemTitles
dataSource.titleNormalFont = UIFont.PFSC_M(ofSize: 15)
dataSource.titleNormalColor = .labelTextColor2
dataSource.titleSelectedFont = UIFont.PFSC_M(ofSize: 18)
dataSource.titleSelectedColor = .mainTextColor
dataSource.isItemSpacingAverageEnabled = false
dataSource.itemWidth = JXSegmentedViewAutomaticDimension
dataSource.itemSpacing = 90
return dataSource
}()
lazy var navBar: UIView = {
let bar = UIView()
let backBtn = UIButton()
backBtn.setImage(UIImage(named: "back_icon"), for: .normal)
backBtn.addTarget(self, action: #selector(didBackBtnClicked), for: .touchUpInside)
backBtn.YH_clickEdgeInsets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)
bar.addSubview(backBtn)
backBtn.snp.makeConstraints { make in
make.width.height.equalTo(21)
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(16)
}
return bar
}()
//分类title 所对应的VC
lazy var listContainerView: JXSegmentedListContainerView! = {
return JXSegmentedListContainerView(dataSource: self, type: .scrollView)
}()
@objc func didBackBtnClicked() {
self.navigationController?.popViewController(animated: true)
}
override func viewDidLoad() {
super.viewDidLoad()
gk_navBarAlpha = 0
gk_navigationBar.isHidden = true
view.backgroundColor = .white
for i in 0..<arrItemTitles.count {
if i == 0 {
let vc = YHServiceListViewController()
arrItemVCs.append(vc)
} else {
let vc = YHServerHKLifeViewController()
arrItemVCs.append(vc)
}
}
//segmentedViewDataSource一定要通过属性强持有!!!!!!!!!
segmentedView.dataSource = segmentedDataSource
segmentedView.collectionView.backgroundColor = .white
view.addSubview(segmentedView)
segmentedView.listContainer = listContainerView
view.addSubview(listContainerView)
//分类Title
segmentedView.dataSource = segmentedDataSource
segmentedView.delegate = self
//配置指示器
let indicator = JXSegmentedIndicatorLineView()
indicator.indicatorWidth = 16
indicator.indicatorColor = UIColor.brandMainColor
segmentedView.indicators = [indicator]
segmentedView.backgroundColor = UIColor(red: 0.95, green: 0.95, blue: 0.95, alpha: 1)
view.addSubview(navBar)
navBar.snp.makeConstraints { make in
make.left.equalToSuperview()
// make.top.equalToSuperview().offset(k_Height_statusBar())
make.height.equalTo(k_Height_NavContentBar)
make.width.equalTo(47)
make.centerY.equalTo(segmentedView.snp.centerY)
}
segmentedView.defaultSelectedIndex = defaltIndex
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//处于第一个item的时候,才允许屏幕边缘手势返回
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
//离开页面的时候,需要恢复屏幕边缘手势,不能影响其他页面
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
segmentedView.frame = CGRect(x: 0, y: k_Height_safeAreaInsetsTop(), width: view.bounds.size.width, height: 48)
listContainerView.frame = CGRect(x: 0, y: k_Height_safeAreaInsetsTop() + 48, width: view.bounds.size.width, height: view.bounds.size.height - 48 - k_Height_safeAreaInsetsTop())
}
}
extension YHServiceViewController: JXSegmentedViewDelegate {
func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) {
navigationController?.interactivePopGestureRecognizer?.isEnabled = (segmentedView.selectedIndex == 0)
}
}
extension YHServiceViewController {
func jumpToItemIndex(itemIndex : Int) {
self.segmentedView.selectItemAt(index: itemIndex)
}
}
extension YHServiceViewController: JXSegmentedListContainerViewDataSource {
func numberOfLists(in listContainerView: JXSegmentedListContainerView) -> Int {
if let titleDataSource = segmentedView.dataSource as? JXSegmentedBaseDataSource {
return titleDataSource.dataSource.count
}
return 0
}
func listContainerView(_ listContainerView: JXSegmentedListContainerView, initListAt index: Int) -> JXSegmentedListContainerViewListDelegate {
return arrItemVCs[index] as! JXSegmentedListContainerViewListDelegate
}
}
......@@ -54,7 +54,7 @@ class YHAppVersionManager {
func needShowAlertViewOfSuggestVersionUpdate() -> Bool {
var isShow = false
if let configModel = YHConfigManager.shared.reqVM.configModel, configModel.suggest_updating == true {
if let alertLatestVersion = UserDefaults.standard.object(forKey: kShowAlertOfSuggestLatestVersion) as? String {
if let alertLatestVersion = UserDefaults.standard.object(forKey: YhConstant.kShowAlertOfSuggestLatestVersion) as? String {
if !configModel.max_version.isEmpty, configModel.max_version != alertLatestVersion {
isShow = true
}
......@@ -81,7 +81,7 @@ class YHAppVersionManager {
// 保存显示过的最新建议升级弹窗的app版本
func saveShowLatestUpdateVersion () {
if let configModel = YHConfigManager.shared.reqVM.configModel {
UserDefaults.standard.set(configModel.max_version, forKey: kShowAlertOfSuggestLatestVersion)
UserDefaults.standard.set(configModel.max_version, forKey: YhConstant.kShowAlertOfSuggestLatestVersion)
UserDefaults.standard.synchronize()
}
}
......
......@@ -162,10 +162,7 @@ func goToMessagePage() {
}
// MARK: - 常量定义
class YhConstant {
// MARK: - 登录信息
static let KLoginedInfoKey = "KLoginedInfoKey"
......@@ -173,6 +170,9 @@ class YhConstant {
//登录后的用户信息
static let kLoginUserInfo = "loginUserInfo"
static let kShowAlertOfSuggestLatestVersion = "show_alert_suggest_latest_version"
}
extension YhConstant {
......
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