TabbedPageView
概述
TabbedPageView 是一个 UIView 子类,让您能够在应用程序的任何地方快速创建标签子视图
信息
代理方法
func tabbedPageView(_ tabbedPageView: TabbedPageView, didSelectTabAt index: Int)
- 当用户在索引 index
选择标签时调用
数据源方法
func numberOfTabs(in tabbedPageView: TabbedPageView) -> Int
- TabbedPageView 中现有的标签数
func tabbedPageView(_ tabbedPageView: TabbedPageView, tabForIndex index: Int) -> Tab
- 在索引 index
应显示的标签对象
可定制属性
tabBar.position
- 视图中标签栏的位置。两个可能值:TabBarPosition.top
,TabBarPosition.bottom
。默认使用 TabBarPosition.top
。
tabBar.tabWidth
- 视图中标签的宽度。默认情况下,宽度将计算为 viewWidth / 标签数量。
tabBar.transitionStyle
- 切换标签时使用的过渡样式。两个可能值:TabBarTransitionStyle.normal
,TabBarTransitionStyle.sticky
。默认使用 TabBarTransitionStyle.normal
。
tabBar.height
- 标签栏的高度。默认情况下,高度将是总视图高度的 7%。
tabBar.sliderColor
- 用于指示当前选定标签的滑块颜色。
由于 TabBar
是 UIView
的子类,因此还可以修改其他标准的 UIView
属性。
标签类型
TabType.icon(UIImage?)
- 包含单个图像的标签
TabType.text(String)
- 包含单个标签,使用标准字符串作为其文本源
TabType.attributedText(NSAttributedString?)
- 包含单个标签,使用属性字符串作为其文本源
TabType.iconWithText(UIImage?, NSAttributedString?)
- 同时包含图标和标签的标签,其中图标位于标签上方
标签来源
TabSource.view(UIView)
- 内容视图来自 UIView 的标签
TabSource.viewController(UIViewController)
- 内容源来自 UIViewController 视图的标签
使用示例
步骤 1
在 storyboard 中向视图控制器添加一个 UIView,并将其类指定为 TabbedPageView
。
步骤 2
在您的代码中从故事板创建一个 TabbedPageView 的出口
@IBOutlet weak var tabbedPageView: TabbedPageView!
步骤 3
在 TabbedPageView
中创建表示您的选项卡的视图控制器
步骤 4
扩展您的 UIViewController 类以遵守 TabbedPageViewDataSource
和 TabbedPageViewDelegate
协议
extension ViewController: TabbedPageViewDelegate {
func tabbedPageView(_ tabbedPageView: TabbedPageView, didSelectTabAt index: Int) {
print("tab selected!")
}
}
extension ViewController: TabbedPageViewDataSource {
func numberOfTabs(in tabbedPageView: TabbedPageView) -> Int {
return tabs.count
}
func tabbedPageView(_ tabbedPageView: TabbedPageView, tabForIndex index: Int) -> Tab {
return tabs[index]
}
}
步骤 5
在您的控制器中的 viewDidLoad 方法中,初始化您的标签并指定 TabbedPageView 的数据源和代理,然后重新加载视图
override func viewDidLoad() {
super.viewDidLoad()
let myAttribute = [ NSAttributedString.Key.font: UIFont(name: "Chalkduster", size: 12.0)!, NSAttributedString.Key.foregroundColor: UIColor.red]
let myString = NSMutableAttributedString(string: "TAB3", attributes: myAttribute )
let controller1 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "View1")
let controller2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "View2")
let controller3 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "View3")
tabs = [
Tab(contentSource: .viewController(controller1), type: .icon(UIImage(named: "Grid")!)),
Tab(contentSource: .viewController(controller2), type: .text("TAB2")),
Tab(contentSource: .viewController(controller3), type: .attributedText(myString))
]
tabbedPageView.tabBar.sliderColor = UIColor.magenta
tabbedPageView.tabBar.position = .top
tabbedPageView.tabBar.transitionStyle = .sticky
tabbedPageView.tabBar.tabWidth = 130
tabbedPageView.delegate = self
tabbedPageView.dataSource = self
tabbedPageView.reloadData()
}
安装
TabbedPageView 通过 CocoaPods 提供。
编辑您的 Podfile
并指定依赖项
pod 'TabbedPageView'
要求
- iOS 9.0+
- Swift 4.2
许可
TabbedPageView 可在 MIT 许可证下使用。更多信息请参阅 LICENSE 文件。