123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- //
- // CommunityBannerTableViewCell.swift
- // RainbowPlanet
- //
- // Created by 南鑫林 on 2019/6/16.
- // Copyright © 2019 RainbowPlanet. All rights reserved.
- //
- import UIKit
- import FSPagerView
- import SwiftyMediator
- class CommunityBannerTableViewCell: UITableViewCell {
- class func cellWith(tableView:UITableView,indexPath:IndexPath) -> CommunityBannerTableViewCell {
- let ID = "CommunityBannerTableViewCell"
- tableView.register(CommunityBannerTableViewCell.self, forCellReuseIdentifier: ID)
- let cell : CommunityBannerTableViewCell = tableView.dequeueReusableCell(withIdentifier: ID, for: indexPath) as! CommunityBannerTableViewCell
- cell.indexPath = indexPath
- return cell
- }
-
- override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
- setupViews()
- setupLayouts()
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- var indexPath: IndexPath? {
- didSet {
-
- }
- }
-
- //MRAK: - 设置View
- private func setupViews() {
- self.selectionStyle = .none
- backgroundColor = kf7f8faColor
- addSubview(pagerView)
- addSubview(pageControl)
- }
-
- private func setupLayouts() {
- pagerView.snp.makeConstraints { (make) in
- make.edges.equalToSuperview()
- }
-
- }
-
- private lazy var pagerView: FSPagerView = {
- let pagerView = FSPagerView(frame: CGRect.zero)
- pagerView.backgroundColor = kf7f8faColor
- pagerView.delegate = self
- pagerView.dataSource = self
- pagerView.scrollDirection = .horizontal
- return pagerView
- }()
-
- private lazy var pageControl: NXLPageControl = {
- let pageControl = NXLPageControl()
- pageControl.pointSize = CGSize.init(width: kScaleValue(value: 5), height: 5)
- pageControl.currentWidthMultiple = 1//当前点的宽度为其他点的4倍
- pageControl.localPointSpace = 5
- pageControl.currentColor = kThemeColor
- pageControl.otherColor = UIColor(white: 0, alpha: 0.2)
- pageControl.clickPoint { [weak self] (index) in
-
- }
- return pageControl
- }()
-
- var communityRecommendTypeDataModels: Array<CommunityRecommendTypeDataModel>? {
- didSet {
- let pageControlSizeWidth = CGFloat(CGFloat(communityRecommendTypeDataModels?.count ?? 0) * kScaleValue(value: 5))
- let pageControlSpacingWidth = CGFloat(CGFloat((communityRecommendTypeDataModels?.count ?? 0) - 1) * kScaleValue(value: 5))
- let pageControlWidth = pageControlSizeWidth + pageControlSpacingWidth
-
- pageControl.snp.remakeConstraints { (make) in
- make.bottom.equalTo(-10)
- make.height.equalTo(5)
- make.centerX.equalToSuperview()
- make.width.equalTo(pageControlWidth)
- }
- pageControl.numberOfPages = (communityRecommendTypeDataModels?.count ?? 0)
- if pageControl.numberOfPages > 1 {
- pageControl.isHidden = false
- pagerView.automaticSlidingInterval = 5.0
- pagerView.isInfinite = true
- }else {
- pageControl.isHidden = true
- pagerView.automaticSlidingInterval = 0.0
- pagerView.isInfinite = false
- }
- }
- }
- }
- extension CommunityBannerTableViewCell:FSPagerViewDataSource,FSPagerViewDelegate {
- func numberOfItems(in pagerView: FSPagerView) -> Int {
- return communityRecommendTypeDataModels?.isEmpty ?? true ? 0 : communityRecommendTypeDataModels?.count ?? 0
- }
- func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
- let cell = CommunityBannerFSPagerViewCell.cellWith(collectionView: pagerView, index: index)
- cell.communityRecommendTypeDataModel = communityRecommendTypeDataModels?[index]
- return cell
- }
-
- func pagerView(_ pagerView: FSPagerView, didSelectItemAt index: Int) {
- pagerView.deselectItem(at: index, animated: true)
-
- let communityRecommendTypeDataModel = communityRecommendTypeDataModels?[index]
- let communityBannerType = CommunityBannerType(rawValue: communityRecommendTypeDataModel?.type ?? 0)
- switch communityBannerType {
- case .none?:
- break
- case .content?: //内容
- let postType = PostType(rawValue: communityRecommendTypeDataModel?.postType ?? "image")
- switch postType {
- case .image?,.html?:
- Mediator.push(CommunityRouterModuleType.pushPostDetailContent(postId: "\(communityRecommendTypeDataModel?.linkContentId ?? 0)"))
- break
- case .video?:
- Mediator.push(CommunityRouterModuleType.pushPostDetailVoide(postId: "\(communityRecommendTypeDataModel?.linkContentId ?? 0)", departType: DepartureVCType.personal, topicId: 0))
- break
- default:
- break
- }
- break
- case .user?: //个人中心
- if communityRecommendTypeDataModel?.linkContentId ?? 0 != UserModel.shared().getModel()?.uid {
- if communityRecommendTypeDataModel?.linkContentId ?? 0 != UserModel.shared().getModel()?.uid {
- Mediator.push(MineRouterModuleType.pushOtherPersonalCenter(uid: communityRecommendTypeDataModel?.linkContentId ?? 0))
- }
- }
-
- break
- case .activity?: //活动
- Mediator.push(H5RouterModuleType.pushActivityId(id: "\(communityRecommendTypeDataModel?.linkContentId ?? 0)"))
- break
- case .topic?: //话题
- Mediator.push(CommunityRouterModuleType.pushFeaturedTopics(id: communityRecommendTypeDataModel?.linkContentId ?? 0))
- break
- default:
- break
-
- }
-
- }
-
- func pagerViewWillEndDragging(_ pagerView: FSPagerView, targetIndex: Int) {
- self.pageControl.currentPage = targetIndex
- }
-
- func pagerViewDidEndScrollAnimation(_ pagerView: FSPagerView) {
- self.pageControl.currentPage = pagerView.currentIndex
- }
-
- }
|