SlideController 1.5.1

SlideController 1.5.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
发布最后发布2020年2月
SPM支持 SPM

Evgeny DedovetsPavel Kondrashkov 维护。



  • Touchlane LLC

LOGO

Language Build Status codecov.io Version License Platform

SlideController 是一个用 Swift 完全编写的简单且灵活的用户界面组件。它利用泛型的力量构建,是 UIPageViewController 的好替代品。

Horizontal Vertical Carousel

要求

  • iOS 9.0+
  • Xcode 10.2+
  • Swift 5.0+

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它:

$ gem install cocoapods

要使用 CocoaPods 将 SlideController 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'SlideController'
end

然后,运行以下命令:

$ pod install

使用

import SlideController
  1. 创建内容
let content = [
            SlideLifeCycleObjectBuilder<PageLifeCycleObject>(),
            SlideLifeCycleObjectBuilder<PageLifeCycleObject>(),
            SlideLifeCycleObjectBuilder<PageLifeCycleObject>()
        ]
  • PageLifeCycleObject 是任何遵循 Initializable, Viewable, SlidePageLifeCycle 协议的对象
  1. 初始化 SlideController
slideController = SlideController<CustomTitleView, CustomTitleItem>(
    pagesContent: content,
    startPageIndex: 0,
    slideDirection: .horizontal)
  • CustomTitleViewTitleScrollView<CustomTitleItem> 的子类
  • CustomTitleItemUIView 的子类,并符合 Initializable, ItemViewable, Selectable 协议
  1. slideController.view 添加到视图层次结构

  2. 在适当的 UIViewController 方法中调用 slideController.viewDidAppear()slideController.viewDidDisappear()

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    slideController.viewDidAppear()
}
override func viewDidDisappear(_ animated: Bool) {
   super.viewDidDisappear(animated)
   slideController.viewDidDisappear()
}

文档

SlideController

SlideController 的默认初始化器。
pagesContent - 控件初始化内容,可以不包含内容。
startPageIndex - 应该最初显示的页面索引。
slideDirection - 滑动方向。为 .horizontal.vertical

public init(pagesContent: [SlideLifeCycleObjectProvidable],
            startPageIndex: Int = 0,
            slideDirection: SlideDirection)

返回 titleView 实例,它是 TitleScrollView 类型。

public var titleView: T { get }

返回当前显示页面的 LifeCycleObject

public var currentModel: SlideLifeCycleObjectProvidable? { get }

返回一个 LifeCycleObject 数组,与 SlideController 的内容相对应。

public private(set) var content: [SlideLifeCycleObjectProvidable]

当设置为 true 时,当内容超出屏幕边界时卸载内容。默认值为 true

public var isContentUnloadingEnabled: Bool { get set }

当设置为 true 时,向最后一个项目的滚动方向将导致跳转到第一个项目。使滚动无限。默认值为 false

public var isCarousel: Bool { get set }

如果此属性的值为 true,则启用内容滚动;如果为 false,则禁用内容滚动。默认为 true

public var isScrollEnabled: Bool { get set }

SlideLifeCycleObjectProvidable 的页面数组追加到滑动内容的末尾。

public func append(object objects: [SlideLifeCycleObjectProvidable])

在滑动内容中插入 SlideLifeCycleObjectProvidable 页面对象到 index 位置。

public func insert(object: SlideLifeCycleObjectProvidable, index: Int)

index 位置移除一个页面。

public func removeAtIndex(index: Int)

如果将 animated 设置为 true,则将内容滑动到 pageIndex 页面并带有滑动动画。不建议使用 forced,因为它将在其他滚动动画正在进行或 pageIndex 等于当前页面时执行移动。默认 animated 值为 true。默认 forced 值为 false

public func shift(pageIndex: Int, animated: Bool = default, forced: Bool = default)

如果将 animated 设置为 true,则按滑动动画滑动到下一页。默认 animated 值为 true

public func showNext(animated: Bool = default)

SlideController 知道它何时显示在屏幕上。用于正确触发 LifeCycle 事件。

public func viewDidAppear()

SlideController 知道它何时不再显示在屏幕上。用于正确触发 LifeCycle 事件。

public func viewDidDisappear()

TitleScrollView

标题视图的对齐方式。支持 .top.bottom.left.right。默认的 alignment 值为 .top

public var alignment: SlideController.TitleViewAlignment { get set }

TitleScrollView 的大小。对于 SlideController.horizontal 滑动方向,titleSize 对应于高度。对于 SlideController.vertical 滑动方向,titleSize 对应于宽度。默认的 titleSize 值为 84

open var titleSize: CGFloat { get set }

TitleScrollView 中显示的标题项数组。

open var items: [TitleItem] { get }