TabbedPageView 0.2.7

TabbedPageView 0.2.7

Michael Onjack 维护。



  • 作者
  • Michael Onjack

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.topTabBarPosition.bottom。默认使用 TabBarPosition.top

tabBar.tabWidth - 视图中标签的宽度。默认情况下,宽度将计算为 viewWidth / 标签数量。

tabBar.transitionStyle - 切换标签时使用的过渡样式。两个可能值:TabBarTransitionStyle.normalTabBarTransitionStyle.sticky。默认使用 TabBarTransitionStyle.normal

tabBar.height - 标签栏的高度。默认情况下,高度将是总视图高度的 7%。

tabBar.sliderColor - 用于指示当前选定标签的滑块颜色。

由于 TabBarUIView 的子类,因此还可以修改其他标准的 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 类以遵守 TabbedPageViewDataSourceTabbedPageViewDelegate 协议

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 文件。