SlideController 是一个用 Swift 完全编写的简单且灵活的用户界面组件。它利用泛型的力量构建,是 UIPageViewController 的好替代品。
要求
- 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
- 创建内容
let content = [
SlideLifeCycleObjectBuilder<PageLifeCycleObject>(),
SlideLifeCycleObjectBuilder<PageLifeCycleObject>(),
SlideLifeCycleObjectBuilder<PageLifeCycleObject>()
]
PageLifeCycleObject
是任何遵循Initializable, Viewable, SlidePageLifeCycle
协议的对象
- 初始化 SlideController
slideController = SlideController<CustomTitleView, CustomTitleItem>(
pagesContent: content,
startPageIndex: 0,
slideDirection: .horizontal)
CustomTitleView
是TitleScrollView<CustomTitleItem>
的子类CustomTitleItem
是UIView
的子类,并符合Initializable, ItemViewable, Selectable
协议
-
将
slideController.view
添加到视图层次结构 -
在适当的 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 }