LZViewPager 1.3.2

LZViewPager 1.3.2

‘ladmini’ 维护。



  • 作者
  • ladmini

⭐️特性

  • 支持 Swift 5。
  • 使用指示栏实现页面视图控制器非常简单。
  • 简单而功能强大的自定义。
  • 完全支持自定义组件。
  • 建立在强大且信息丰富的页面视图控制器之上。
  • 头部可滚动,如果按钮的宽度大于当前视图的宽度。

📋要求

LZViewPager 需要 iOS 10,Swift 5。

📲安装

CocoaPods

LZViewPager 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile

pod 'LZViewPager'

并运行 pod install

如果你的 pod 安装不起作用,可能需要更新您的 pod 存储库。您可以尝试

pod repo update

然后运行

pod install

Carthage

LZViewPager 也通过 Carthage 提供。只需使用以下命令通过 Homebrew 安装 carthage

$ brew update
$ brew install carthage

Carthage 依赖项

由于本项目依赖于SnapKit(iOS和OS X的自动布局DSL)。您可以将LZViewPager添加到您的Cartfile中,如下所示:

github "SnapKit/SnapKit" ~> 5.0.0
github "ladmini/LZViewPager"

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/ladmini/LZViewPager", .upToNextMajor(from: "1.2.8"))
]

手动安装

如果您不想使用上述任何依赖项管理器,则可以手动将LZViewPager集成到您的项目中。只需将以下3个文件复制到您的项目中。

  1. LZViewPager.swift
  2. LZViewPagerHeader.swift
  3. LZViewPagerContent.swift

🚀使用方法

基本用法

  1. 创建一个ViewController并提供一个LZViewPagerDelegateLZViewPagerDataSource

  2. 将一个UIView拖入ViewController的视图中,将其类型设置为LZViewPager,然后设置一个名为"viewPager"的输出变量

  1. 设置您想显示的项目

  2. 将hostController设置为self

  3. viewPager.reload()

class ViewController: BaseViewController, LZViewPagerDelegate, LZViewPagerDataSource {
    @IBOutlet weak var viewPager: LZViewPager!
    private var subControllers:[UIViewController] = []
    override func viewDidLoad() {
        super.viewDidLoad()
        viewPager.dataSource = self
        viewPager.delegate = self
        viewPager.hostController = self
        let vc1 = UIViewController.createFromNib(storyBoardId: "ContentViewController1")!
        vc1.title = "Title1"
        let vc2 = UIViewController.createFromNib(storyBoardId: "ContentViewController2")!
        vc2.title = "Title2"
        let vc3 = UIViewController.createFromNib(storyBoardId: "ContentViewController3")!
        vc3.title = "Title3"
        let vc4 = UIViewController.createFromNib(storyBoardId: "ContentViewController4")!
        vc4.title = "Title4"
        subControllers = [vc1, vc2, vc3, vc4]
        viewPager.reload()
    }
}
  1. 实现LZViewPagerDataSource
    func numberOfItems() -> Int {
        return self.subControllers.count
    }
    
    func controller(at index: Int) -> UIViewController {
        return subControllers[index]
    }
    
    func button(at index: Int) -> UIButton {
        //Customize your button styles here
        let button = UIButton()
        button.setTitleColor(UIColor.black, for: .normal)
        button.titleLabel?.font = UIFont.systemFont(ofSize: 16)
        return button
    }
  1. 完成!🎉

定制

您可以通过datasource方法“func button(at index: Int) -> UIButton”定制您按钮的样式,您也可以通过实现其他datasource方法来定制其他样式,例如

func heightForHeader() -> CGFloat
func backgroundColorForHeader() -> UIColor
func heightForIndicator(at index: Int) -> CGFloat
func colorForIndicator(at index: Int) -> UIColor
func shouldShowIndicator() -> Bool
func widthForButton(at index: Int) -> CGFloat
func widthForIndicator(at index: Int) -> CGFloat
func buttonsAligment() -> ButtonsAlignment
func shouldEnableSwipeable() -> Bool
func leftMarginForHeader() -> CGFloat //default is 0
func rightMarginForHeader() -> CGFloat //default is 0
func shouldShowSeparator() -> Bool // default is false
func colorForSeparator()-> UIColor // default is .white
func heightForSeparator() -> CGFloat // default is 2.0
func leftMarginForSeparator() -> CGFloat //default is 0
func rightMarginForSeparator() -> CGFloat //default is 0
func topMarginForSeparator() -> CGFloat //default is 0

代理

需要时实现代理方法

func didSelectButton(at index: Int)
func willTransition(to index: Int)
func didTransition(to index: Int)

LZViewPager实例方法

当您的数据源发生变化时,应调用reload()方法进行刷新。如果想要编程定位到某个页面,可以调用select(index: Int, animated: Bool)方法,需要注意的是animated是一个可选参数,为了与之前的版本兼容。如果您没有指定animated,则默认为true。

func reload()
public func select(index: Int, animated: Bool = true)

LZViewPager实例属性

public var currentIndex: Int?

如何运行此演示

  1. 克隆此仓库
  2. 执行carthage update
  3. 构建并运行

⚠️故障排除

如果您在使用LZViewPager时遇到问题,请发起问题

👨‍💻 关于

❤️贡献

欢迎在GitHub上提交bug报告和pull request:https://github.com/ladmini/LZViewPager

👮🏻‍♂️ 许可证

该库是根据MIT许可协议开源的。