PlutoView 0.0.3

PlutoView 0.0.3

Yusef Naser维护。



PlutoView 0.0.3

  • Yusef-Naser

PlutoView

如果您想了解Pluto是如何开发的,您可以查看我在medium上的文章

PlutoView是一个iOS的Swift库,用于添加带有水平滚动标签的折叠/展开头部视图。

主要标签

  • Pluto中有3个主要标签:ScrollViewTabTableViewTabCollectionViewTab

1- TableViewTab

  • 您可以使用此标签来处理表格中的数据,并且可以访问标签内部的可视表来注册单元格和其他属性
class FirstTab : TableViewTab {
    override init(frame: CGRect) {
        super.init(frame: frame)
        initViews()
    }
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    private func initViews () {
        tableView.delegate = self
        tableView.dataSource = self
        tableView.register(UITableViewCell.self , forCellReuseIdentifier: "cell" )
        tableView.backgroundColor = .white
    }
}

2- CollectionViewTab

  • 您可以使用此标签来处理collectionView中的数据,并且可以访问collectionView内部的可视表来注册单元格和其他属性
class SecondTab : CollectionViewTab {
    override init(frame: CGRect) {
        super.init(frame: frame)
        initViews()
    }
    required init?(coder: NSCoder) {
        super.init(coder: coder)
    }
    private func initViews () {
        collectionView.collectionViewLayout = UICollectionViewFlowLayout()
        collectionView.delegate = self
        collectionView.dataSource = self
        collectionView.register(CellImage.self , forCellWithReuseIdentifier: "cell")
    }
}

3- ScrollViewTab

  • 在这个标签中,您可以通过调用parentView来访问scrollView及其内部视图,您可以在parentView内部添加您的组件。但是,当您需要为最后一个组件添加底部锚点时,您可以使用函数addBottomAnchor(view : UIView , constant : CGFloat)并将最后一个组件和正值传递到底部,例如示例

如何使用

  • 您可以使用以下两种方法使用Pluto:"添加标题"和"不添加标题"。

添加标题

  • 您可以使用以下代码来初始化 PlutoView 和添加标题
import UIKit
import PlutoView
class ViewController: UIViewController {
     private lazy var collapse  : PlutoView = {
         let l = PlutoView(maxHeightType: .fixed(float: 250) , headerMinHeight: 70 )
         l.delegate = self
         l.registerTabs(tabs: [FirstTab.self  , SecondTab.self , ThirdTab.self])
         return l
     }()
     
     private let headerView : HeaderView = {
         let l = HeaderView()

         return l
     }()
     
     override func viewDidLoad() {
         super.viewDidLoad()
         view = collapse
         collapse.addHeader(header: headerView )
     }
 }
 
 extension ViewController : PlutoDelegate {
     func getPageIndex(page: Int) {

     }
     func didScrollView(_ scrollView: UIScrollView) {
         
     }
     func getCountTabs() -> Int {
        return 3
     }
     func tabForIndex(index: Int) -> TabCell? {
         if index == 0 {
             getPageIndex(page: 0)
             let cell = collapse.initTab(type: FirstTab.self, index: index ) as! FirstTab
             return cell
         }else if index == 1 {
             let cell = collapse.initTab(type: SecondTab.self , index: index ) as! SecondTab
             return cell
         }else if index == 2 {
             let cell = collapse.initTab(type: ThirdTab.self , index: index ) as! ThirdTab
             return cell
         }
         return nil
     }
 }
  • PlutoDelegate 中,您必须实现 4 个函数:1- getPageIndex - 在从选项卡滚动到另一个选项卡时使用此函数。2- didScrollView - 在折叠/展开标题时使用此函数。3- getCountTabs - 返回选项卡数量。4- tabForIndex - 您可以使用 initTab 函数初始化选项卡,并可以访问这些选项卡。

无标题

  • 您可以直接通过传递 None 属性创建 PlutoView 对象,并将其用作选项卡,而不是创建 collectionView 并处理选项卡的横向滚动。
private lazy var collapse  : PlutoView = {
    let l = PlutoView(maxHeightType: .none , headerMinHeight: 70  )
    l.delegate = self
    l.registerTabs(tabs: [FirstTab.self  , SecondTab.self , ThirdTab.self])
    return l
}()

作者

Yusef Naser

许可

PlutoView 根据 MIT 许可证提供。有关更多信息,请参阅 LICENSE 文件。