JYPageController
示例
要运行示例项目,请克隆仓库,然后首先从 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是不动的,放大后位置出现偏差
预览
样式 | 预览 |
---|---|
展示在导航栏中 | |
自定义下划线大小 | |
等宽的item | |
自定义指示器 | |
自定义item | |
头部headerView |
使用
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
}
作者
许可证
JYPageController受MIT许可证协议的许可。有关更多信息,请参阅LICENSE文件。