// // IHDashboardMainView.swift // Inhealth // // Created by weclouds on 2019/12/10. // Copyright © 2019 weclouds. All rights reserved. // import UIKit import JXSegmentedView import JXPagingView class IHDashboardMainView: UIView { var gatwayListCallBack:(()->Void)? var cond_code:String?{ didSet{ headerView.cond_code = self.cond_code } } var cond_txt :String?{ didSet{ headerView.cond_txt = self.cond_txt } } var level:String?{ didSet{ headerView.level = self.level } } var averageAir:String?{ didSet{ headerView.averageAir = self.averageAir } } var envorentmentInfo:Home_room_env_status?{ didSet{ self.segmentedView.reloadData() } } var headerViewCallback : (()->Void)? var pagingView: JXPagingView! var userHeaderView: IHDashBoardHeaderView! var headerContainerView:UIView! var segmentedViewDataSource : JXSegmentedTitleDataSource! var segmentedView:JXSegmentedView! let titles = ["设备概览","环境指数","所有"] var tableViewHeaderViewHeight : Int = 220 var heightForHeaderInSection:Int = 50 var currentIndex: Int! = 0 lazy var headerView: IHDashBoardHeaderView = { let headerView = IHDashBoardHeaderView(frame: CGRect(x: 0, y: 0, width: Int(KSCREENWIDTH), height: tableViewHeaderViewHeight)) headerView.backgroundColor = .white return headerView }() override init(frame: CGRect) { super.init(frame: frame) headerContainerView = UIView(frame: CGRect(x: 0, y: 0, width: Int(KSCREENWIDTH), height: tableViewHeaderViewHeight)) headerContainerView.addSubview(headerView) headerView.callback = {[unowned self] in if let headerViewCallback = self.headerViewCallback { headerViewCallback() } } //segmentViewDataSource一定要通过属性强持有 //设置文字样式 segmentedViewDataSource = JXSegmentedTitleDataSource() segmentedViewDataSource.titles = titles segmentedViewDataSource.titleSelectedColor = UIColor(hexString: "#333333")! segmentedViewDataSource.titleSelectedFont = UIFont(name: PingFangSC_Semibold, size: 16) segmentedViewDataSource.titleNormalColor = UIColor(hexString: "#C6CDD5")! segmentedViewDataSource.titleNormalFont = UIFont(name: PingFangSC_Semibold, size: 16)! segmentedViewDataSource.isTitleColorGradientEnabled = true segmentedViewDataSource.isTitleZoomEnabled = true //设置segmentView segmentedView = JXSegmentedView(frame: CGRect(x: 0, y: 0, width: KSCREENWIDTH, height: CGFloat(heightForHeaderInSection))) segmentedView.delegate = self segmentedView.backgroundColor = .white segmentedView.dataSource = segmentedViewDataSource segmentedView.isContentScrollViewClickTransitionAnimationEnabled = false //设置指示器 let lineView = JXSegmentedIndicatorLineView() lineView.indicatorColor = UIColor(hexString: "#573F95")! lineView.indicatorWidth = 30 segmentedView.indicators = [lineView] let lineWidth = 1/UIScreen.main.scale let lineLayer = CALayer() lineLayer.frame = CGRect(x: 0, y: segmentedView.bounds.height - lineWidth, width: segmentedView.bounds.width, height: lineWidth) segmentedView.layer.addSublayer(lineLayer) pagingView = JXPagingView(delegate: self) addSubview(pagingView) segmentedView.contentScrollView = pagingView.listContainerView.collectionView } func d_viewDidLauyouSubView() { pagingView.frame = self.bounds } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } } extension IHDashboardMainView:JXPagingViewDelegate{ func tableHeaderViewHeight(in pagingView: JXPagingView) -> Int { return tableViewHeaderViewHeight } func tableHeaderView(in pagingView: JXPagingView) -> UIView { return headerContainerView } func heightForPinSectionHeader(in pagingView: JXPagingView) -> Int { return heightForHeaderInSection } func viewForPinSectionHeader(in pagingView: JXPagingView) -> UIView { return segmentedView } func numberOfLists(in pagingView: JXPagingView) -> Int { return titles.count } func pagingView(_ pagingView: JXPagingView, initListAtIndex index: Int) -> JXPagingViewListViewDelegate { if index == 0 { let list = IHEquipmentView() list.gateWayCallback = self.gatwayListCallBack pagingView.mainTableView.isScrollEnabled = true return list }else if index == 1 { let list = IHAirQualityView() list.envorenmentInfo = self.envorentmentInfo pagingView.mainTableView.isScrollEnabled = true return list }else{ let list = IHHotelView() pagingView.height = self.height pagingView.mainTableView.isScrollEnabled = true return list } } func mainTableViewDidScroll(_ scrollView: UIScrollView) { } } extension IHDashboardMainView:JXSegmentedViewDelegate{ func segmentedView(_ segmentedView: JXSegmentedView, didSelectedItemAt index: Int) { if currentIndex == index { return } if index == 0 { pagingView.mainTableView.contentOffset = CGPoint(x: 0, y: 0) //恢复位置 currentIndex = index }else if index == 1{ pagingView.mainTableView.contentOffset = CGPoint(x: 0, y: 0) //恢复位置 currentIndex = index }else{ pagingView.mainTableView.contentOffset = CGPoint(x: 0, y: 0) //恢复位置 currentIndex = index } } }