### ZFMultiTabPage 组件介绍及使用方法
ZFMultiTabPage框架是采用Swift开发的多Tab框架,实现了:
> - 可自定义头部视图(可控制显示与隐藏)
> - 可自定义Tab视图(可个性化设置)
> - 将一些通用多Tab框架里的由调用方向框架先创建好各个子tab视图再一起传入的机制优化成了==由框架向调用方通过代理方法索要各个子tab的视图,提升了加载速度,防止页面卡顿==
> - 加入Tab子视图的==缓存机制==,避免了框架向调用方重复索要
> - 对视图滑动的多个回调事件进行了处理,并通过代理方法对面暴露,调用方可以在各种时机做相应的业务处理,例如预加载等等
> - 解决了左滑退出手势冲突的问题
> - 加入了UIScrollView嵌套滑动手势互斥机制,优化了滑动体验
#### 1.主框架:ZFMultiTabPageViewController.swift
文件路径:ZFMultiTabPage/MainPage/Controller
此页面的结构主要包括三部分:
> - mainScrollView: 主view,用来实现整个页面的上下滑动效果
> - headerView: 头部view
> - tabView: 多tab view
> - collectionView: 用来实现每个tab对应的子页面的横滑效果,每个cell的宽度是一屏(bounds.size.width),cell的个数由外部传入,详细使用下面会介绍
具体使用方法如下代码:
```
/// 初始化方法
/// - Parameters:
/// - tabCount: tab数量
/// - headerView: 头部视图
/// - tabView: tab视图
/// - titleBarHeight: titleBar的高度
init(tabCount: Int, headerView: UIView, tabView: UIView, titleBarHeight: CGFloat) {
}
/// 初始化方法
/// - Parameters:
/// - tabCount: tab数量
/// - headerView: 头部视图
/// - tabView: tab视图
/// - titleBarHeight: titleBar的高度
/// - defaultIndex: 可选参数,默认显示的子tab的索引,默认显示第一个
/// - isHiddenHeaderView: 可选参数,是否隐藏头部视图,默认显示
/// - offsetHeight: 可选参数,主视图的偏移量,默认 = 0
init(tabCount: Int, headerView: UIView, tabView: UIView, titleBarHeight: CGFloat, defaultIndex: Int = 0, isHiddenHeaderView: Bool = false, offsetHeight: CGFloat = 0) {
}
```
==注==:collectionView的cell在重用之前需要将原有的subview清掉,防止重复多次add
```
override func prepareForReuse() {
super.prepareForReuse()
for subView in self.contentView.subviews {
subView.removeFromSuperview()
}
}
```
#### 2.Tab的子页面:ZFMultiTabChildPageViewController.swift
文件路径:ZFMultiTabPage/MainPage/Controller
此VC主要是封装了一个基类,每个tab对应的页面都要继承此基类。
#### 3.多Tab组件:ZFMultipleTabView.swift
文件路径:ZFMultiTabPage/Tab
此多Tab组件对外提供了非常方便使用的三个接口,可以配合主框架的代理方法使用:
```
/// 视图滑动时调用
/// - Parameter pager: 滑动的子view
public func pagerDidScroll(pager: UIScrollView) {
}
/// 视图滑动开始减速调用
/// - Parameter pager: 滑动的子view
public func pagerDidEndDecelerating(pager: UIScrollView) {
}
/// 视图动画完成后调用
/// - Parameter pager: 滑动的子view
public func pagerDidEndScrollingAnimation(pager: UIScrollView) {
}
```
优点:
> - 不需要调用方自行的计算当前视图的此次滑动是滑动到了第几个子tab
> - 不需要调用方计算此次滑动是从第几个子tab滑动了第几个tab,==索引相关的计算都已经由此Tab组件完成==,大大的减轻了调用方的工作量。
> - 并配有如下配置文件(ZFMultipleTabViewConfig.swift),可以让调用方非常方便的自定义Tab按钮的选中和非选中状态下来的字体大小、颜色,以及追踪器的颜色、宽度比例、显示与隐藏:
> - 扩展性强,可以通过config配置文件去扩展现有的功能
```
class ZFMultipleTabViewConfig: NSObject {
/** 是否显示底部分割线,默认为true */
var showBottomSeparator: Bool = true
/** 按钮之间的间距,默认为 20.0f */
var spacingBetweenButtons: CGFloat = 20
/** 标题文字字号大小,默认 15 号字体 */
var titleFont: UIFont = UIFont.systemFont(ofSize: 15)
/** 标题文字选中字号大小,默认 15 号字体 */
var titleSelectedFont: UIFont = UIFont.systemFont(ofSize: 15)
/** 普通状态下标题按钮文字的颜色,默认为黑色 */
var titleColor: UIColor = UIColor.black
/** 选中状态下标题按钮文字的颜色,默认为红色 */
var titleSelectedColor: UIColor = UIColor.red
/** 追踪器颜色,默认为红色 */
var indicatorColor: UIColor = UIColor.red
/** 追踪器高度,默认为 3.0f */
var indicatorHeight: CGFloat = 3.0
/** 追踪器宽度比,默认为 1.0f,与title同宽 */
var indicatorWidthRate: CGFloat = 1.0
/** 追踪器的圆角,默认为 2.0f */
var indicatorCorner: CGFloat = 2.0
/** 追踪器距离底部的距离,默认为 5.0f */
var indicatorBottomDistance: CGFloat = 5.0
}
```
#### 4.Title组件:ZFTitleBar.swift
文件路径:ZFMultiTabPage/Title
此titleBar对外提供了做渐隐渐现动效的接口,用户可以自行设置maxScrollY属性的值,来控制主页面在上下滑动的时候bar的透明度
```
func setTransparent(_ offsetY: CGFloat) {
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
ios开发_基于iOS+Swift开发的多Tab框架.zip (60个子文件)
ios开发_基于iOS+Swift开发的多Tab框架
ZFMultiTabPageTests
ZFTabMenuTests.swift 907B
Info.plist 727B
ZFMultiTabPageUITests
Info.plist 727B
ZFTabMenuUITests.swift 1KB
ZFMultiTabPage
ZFMultiTabPage-Bridging-Header.h 147B
Tab
ZFMultipleTabViewConfig.swift 2KB
ZFMultipleTabView.swift 12KB
Base.lproj
LaunchScreen.storyboard 2KB
Preview Content
Preview Assets.xcassets
Contents.json 62B
Title
ZFTitleBar.swift 2KB
MainPage
View
ZFCommonTabItemCell.swift 1018B
ZFCommonTabScrollView.swift 813B
Controller
ZFMultiTabChildPageViewController.swift 774B
ZFMultiTabPageViewController.swift 15KB
SceneDelegate.swift 2KB
Utility
Extension
String+Utility.swift 490B
UIView+Utility.swift 1KB
Masonry
MASConstraint.h 7KB
MASViewAttribute.h 1KB
NSLayoutConstraint+MASDebugAdditions.h 326B
MASConstraintMaker.h 5KB
Masonry.h 802B
NSArray+MASAdditions.m 6KB
MASLayoutConstraint.m 227B
NSLayoutConstraint+MASDebugAdditions.m 5KB
MASConstraint+Private.h 2KB
MASConstraint.m 8KB
ViewController+MASAdditions.h 1KB
MASCompositeConstraint.m 5KB
View+MASShorthandAdditions.h 5KB
NSArray+MASShorthandAdditions.h 1016B
MASViewConstraint.m 13KB
View+MASAdditions.h 5KB
MASUtilities.h 6KB
MASViewAttribute.m 1KB
MASConstraintMaker.m 10KB
NSArray+MASAdditions.h 3KB
MASLayoutConstraint.h 505B
View+MASAdditions.m 7KB
MASViewConstraint.h 1KB
MASCompositeConstraint.h 494B
ViewController+MASAdditions.m 1KB
AppDelegate.swift 2KB
Demo
View
ZFColloectionDemoItemCell.swift 1KB
ZFCollectionHeaderView.swift 827B
Controller
ZFDemoViewController.swift 4KB
ZFCollectionDemoViewController.swift 5KB
Info.plist 2KB
Assets.xcassets
header_bg.imageset
Contents.json 306B
header@3x.png 49KB
Contents.json 62B
AppIcon.appiconset
Contents.json 2KB
README.md 5KB
ZFMultiTabPage.xcodeproj
project.pbxproj 39KB
xcuserdata
yuzhengfei.xcuserdatad
xcdebugger
Breakpoints_v2.xcbkptlist 580B
xcschemes
xcschememanagement.plist 460B
project.xcworkspace
xcshareddata
IDEWorkspaceChecks.plist 238B
contents.xcworkspacedata 195B
xcuserdata
yuzhengfei.xcuserdatad
UserInterfaceState.xcuserstate 172KB
IDEFindNavigatorScopes.plist 182B
共 60 条
- 1
资源评论
DdddJMs__135
- 粉丝: 650
- 资源: 207
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功