JYPageController 0.3.9

JYPageController 0.3.9

wangtao311 维护。



  • 作者:
  • wangtao

JYPageController

CI Status Version License Platform

示例

要运行示例项目,请克隆仓库,然后首先从 Example 目录运行 pod install

需求

安装

JYPageController 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中

pod 'JYPageController'

功能

1. 在init方法中继承JYPageController并配置config属性
2. 支持设置字体大小和颜色
3. 支持设置标题间的间距
4. 支持设置默认的selectedIndex
5. 支持设置/清空每个标题的badgeView,以及badgeView和标题item的间距
6. 支持设置下划线颜色、宽高、圆角,以及是否显示下划线指示器
7. 在滚动过程中,保持每个标题item放大缩小过程中item间距不变
8. 支持将标题tab显示在导航栏
9. 保证childViewController的生命周期
10. 标题下指示器支持多样式,支持自定义View
11. menuView的item支持自定义View
12. menuView的样式目前以主流APP的下划线或自定义image为主。暂时不支持其他非主流的样式
13. 支持头部headerView,menuView可以悬停

感谢WMPageController作者,childController的生命周期逻辑和item缩放过程中颜色变化的逻辑借鉴自WMPageController
但同时也解决了使用WMPageController过程中遇到的两个问题:
1. 当选中和非选中字体差距较大时,选中的item和非选中的item间距会变得很小,UI无法接受
2. item在放大的过程中,item的badgeView是不动的,放大后位置出现偏差

预览

样式 预览
展示在导航栏中 image
自定义下划线大小 image
等宽的item image
自定义指示器 image
自定义item image
头部headerView image

使用

1. 继承JYPageController
2. 在init方法中配置menuView的颜色、字体大小等

override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {  

    super.init(nibName: nil, bundle: nil)  

    config.normalTitleColor = .systemGray
    config.normalTitleFontWeight = .regular
    config.normalTitleFont = 16

    config.selectedTitleColor = .red
    config.selectedTitleFontWeight = .regular
    config.selectedTitleFont = 21

    config.indicatorLineViewSize = CGSize(width: 14, height: 3)
    config.indicatorLineViewCornerRadius = 2

    config.menuItemMargin = 25

    selectedIndex = 2
    
    ...
} 

3. 实现数据源协议方法

override func pageController(_ pageView: JYPageController, frameForMenuView menuView: JYPageMenuView) -> CGRect {  
    return menuview frame  
}  

override func pageController(_ pageView: JYPageController, frameForContainerView container: UIScrollView) -> CGRect {   
    return childViewcontroller view frame   
}  

override func pageController(_ pageView: JYPageController, titleAt index: Int) -> String {  
    return title  
}  

override func numberOfChildControllers() -> Int {  
    return title count  
}  

override func childController(atIndex index: Int) -> UIViewController {  
    return child controller  
} 

作者

王涛,[email protected]

许可证

JYPageController受MIT许可证协议的许可。有关更多信息,请参阅LICENSE文件。