ViewPager-Swift 2.0.2

ViewPager-Swift 2.0.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最后发布2021年5月
SPM支持 SPM

Nishan Niraula 维护。



  • Nishan Niraula

ViewPager-Swift

一个基于 UIPageViewController 和 Scroll View 的简单易用页面滑动库,用于 iOS,具有多种自定义选项,以及用于在页面之间切换的点击和滑动手势。

新功能

这次发布 2.0.1 提供了对 Swift 4.2 及以上版本的支持。如果您想支持更旧的 Swift 版本,请使用之前的版本。

本次发布包含与之前版本不兼容的更改。我已经尽可能地最小化更改以支持向后兼容。

变更日志

  • 已将 ViewPagerControllerDataSource 重命名为 ViewPagerDataSource
  • 已将 ViewPagerControllerDelegate 重命名为 ViewPagerDelegate
  • 简化了创建 ViewPager 及其选项的方式。请参阅如何使用部分
  • 引入了显示在标签栏下方阴影的属性

安装

注意: 2.0.1 版本提供了对 Swift 4.2 及以上版本的支持。如果您正在使用更旧的 Swift 版本,请使用之前的版本。

此文档适用于 Release 2.0.1。它与之前的版本略有不同。如果您正在寻找之前的文档,请参阅 swift4.0 分支。

使用 Cocoapods

  1. 在 podfile 中添加以下内容
pod 'ViewPager-Swift'
  1. 在终端中键入 pod install
  2. 安装完成后,在想使用 ViewPager 的 UIViewController 中添加 import ViewPager_Swift 模块。

手动安装

添加

  1. ViewPager.swift
  2. ViewPagerOptions.swift
  3. ViewPagerTab.swift
  4. ViewPagerTabView.swift

将文件添加到您的项目中。所有文件都位于 ViewPager-Swift/Core 目录下。

截图

Screenshot-with-image-and-text Screenshot-with-text-only Screenshot-with-image-text-segmented

贡献

您可以通过向 development 分支提交 PR 来为该项目做出贡献。

如何使用

  1. 使用 ViewPagerOptions 类自定义您的 View Pager
  2. 创建 ViewPager 实例并设置其选项、数据源 & 代理。就这么简单

您可以在 MainViewController.swift & TestViewController.swift 文件中找到实现示例。

第 1 步:在其初始化过程中,为 viewPager 设置了默认选项。因此,如果您想使用默认配置,只需这一行就足够了。

let myOptions= ViewPagerOptions()

对于进一步的自定义,

// Let's show image with text
myOptions.tabType = ViewPagerTabType.imageWithText

// If I want all my tabs to be of equal width
myOptions.distribution = ViewPagerOptions.Distribution.equal

// If I don't want my tab to get highlighted for page
myOptions.isTabHighlightAvailable = false

// If I want indicator bar to show below current page tab
myOptions.isTabIndicatorAvailable= true

// Oh! and let's change color of tab to red
myOptions.tabViewBackgroundDefaultColor = UIColor.redColor()

// and many more...

第 2 步

let viewPager = ViewPager(viewController: self)
viewPager.setOptions(options: options)
viewPager.setDataSource(dataSource: self)
viewPager.setDelegate(delegate: self)
viewPager.build()

就这么简单。您需要遵守 ViewPagerDataSource 协议来提供必要的数据,例如标签数量、要显示的 ViewController 等。如果您愿意,还可以遵守 ViewPagerDelegate 协议以接收额外的反馈。

ViewPagerDataSource

// Provide number of pages required
func numberOfPages() -> Int

// Provide ViewController for each page 
func viewControllerAtPosition(position:Int) -> UIViewController

// Provide info for each tab
func tabsForPages() -> [ViewPagerTab]

// Yayy! I can start from any page
optional func startViewPagerAtIndex()->Int

ViewPagerDelegate

当开始过渡到另一个视图控制器但未完成时调用

func willMoveToControllerAtIndex(index:Int)

当过渡到另一个视图控制器完成时调用

func didMoveToControllerAtIndex(index:Int)

附加

您还可以通过程序更改页面。假设您想显示第 3 页。

viewpager.displayViewController(atIndex: 2)    // Since index starts from 0

注意:如果您希望在视图加载时显示特定页面,请使用数据源中的 func startViewPagerAtIndex()->Int 方法。

您还可以更新任何 viewPager 标签。只需更新您通过数据源提供的 ViewPagerTab 数组,然后调用

viewpager.invalidateCurrentTabs()

自定义

您可以执行许多自定义操作。如果您想深入了解,请查看 ViewPagerOptions.swift 文件中的所有 public 变量,这些都可以自定义。

备注

标签指示器:当前页面标签下显示的细水平条

TabView:显示页面图像或名称的水平条,位于ViewPager之上

分布:枚举,用于定义标签的布局方式

枚举

tabType:ViewPagerTabType

确定要显示哪种类型的标签。

basic:仅包含页面名称的标签

image:仅包含页面图像的标签

imageWithText:显示图像和名称(图像下方)的标签

distribution: ViewPagerOptions.Distribution

确定标签的布局方式

normal:从左到右布局标签,可滚动。每个标签的宽度等于其内容宽度加上选项中设置的填充。

equal:从左到右布局标签,可滚动。所有标签的宽度相等。所有标签的宽度等于最大的那个。

segmented:从左到右布局标签,不超过其容器宽度。因此,不可滚动。即所有标签都在视图中。忽略填充。

标签视图和标签指示器

是否高亮当前页面的标签,默认为false

isTabHighlightAvailable:Bool

是否显示标签指示器,默认为true

isTabIndicatorAvailable:Bool

标签的高度,默认为60

tabViewHeight:CGFloat

整个标签视图的背景色

tabViewBackgroundDefaultColor:UIColor

当前标签的背景色。如果将isTabViewHighlightAvailable设置为true,则显示

tabViewBackgroundHighlightColor:UIColor

每个页面标题的颜色

tabViewTextDefaultColor:UIColor

当前标签文本的颜色

tabViewTextHighlightColor:UIColor

每个标签的填充,默认为10

tabViewPaddingLeft:CGFloat
tabViewPaddingRight:CGFloat

标签指示器的高度,默认为3

tabIndicatorViewHeight:CGFloat

标签指示器的背景色

tabIndicatorViewBackgroundColor:UIColor

标签内文本的字体

tabViewTextFont: UIFont

标签内图像的大小。用于tabtype为image或imageWithText的情况。

tabViewImageSize: CGSize

标签内图像的上下边距。用于tabtype为imageWithText的情况。否则图像将自动在标签内居中。

tabViewImageMarginTop: CGFloat
tabViewImageMarginBottom: CGFloat

在标签栏下方显示阴影。

isTabBarShadowAvailable: Bool

阴影自定义。仅在isTabBarShadowAvailable设置为true时生效。

shadowColor: UIColor
shadowOpacity: Float
shadowOffset: CGSize
shadowRadius: CGFloat

ViewPager

每个页面的过渡样式,默认为滚动

viewPagerTransitionStyle:UIPageViewControllerTransitionStyle

许可证

MIT许可证(MIT)

版权(c)2016 nrlnishan

特此授予任何人免费获得此软件及其相关文档文件(以下简称“软件”)的副本的权利,不受任何限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,并允许向获得软件的人提供这样做,前提是遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或实质性部分的副本中。

软件按“原样”提供,不受任何保证,无论是明示的还是暗示的,包括但不限于适销性、适用特定用途和不侵犯知识产权的保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任承担任何责任,无论该索赔、损害或其他责任是因合同行为、侵权或其他行为引起的,无论是与软件本身还是使用或操作软件有关。