测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017 年 12 月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 [Alexandr] 维护。
SwiftyPageController 将有助于在许多页面控制器中使用。
优点
class ViewController: UIViewController {
@IBOutlet weak var segmentControl: UISegmentedControl!
var containerController: SwiftyPageController!
override func viewDidLoad() {
super.viewDidLoad()
segmentControl.addTarget(self, action: #selector(segmentControlDidChange(_:)), for: .valueChanged)
}
func segmentControlDidChange(_ sender: UISegmentedControl) {
// select needed controller
containerController.selectController(atIndex: sender.selectedSegmentIndex, animated: true)
}
func setupContainerController(_ controller: SwiftyPageController) {
// assign variable
containerController = controller
// set delegate
containerController.delegate = self
// set animation type
containerController.animator = .parallax
// set view controllers
let firstController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "\(FirstViewController.self)")
let secondController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "\(SecondViewController.self)")
let thirdController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "\(ThirdViewController.self)")
containerController.viewControllers = [firstController, secondController, thirdController]
// select needed controller
containerController.selectController(atIndex: 0, animated: false)
}
// MARK: - Navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let containerController = segue.destination as? SwiftyPageController {
setupContainerController(containerController)
}
}
}
func swiftyPageController(_ controller: SwiftyPageController, alongSideTransitionToController toController: UIViewController) {
}
func swiftyPageController(_ controller: SwiftyPageController, didMoveToController toController: UIViewController) {
segmentControl.selectedSegmentIndex = containerController.viewControllers.index(of: toController)!
}
func swiftyPageController(_ controller: SwiftyPageController, willMoveToController toController: UIViewController) {
}
func selectController(atIndex index: Int, animated: Bool)
为了选择动画,请使用属性
public var animator: AnimatorType
您可以使用三种类型的动画
如果您想创建自己的动画,则需要实现 SwiftyPageControllerAnimatorProtocol。
public protocol SwiftyPageControllerAnimatorProtocol {
var animationDuration: TimeInterval { get }
var animationProgress: Float { get set }
var animationSpeed: Float { get set }
func setupAnimation(fromController: UIViewController, toController: UIViewController, panGesture: UIPanGestureRecognizer, animationDirection: SwiftyPageController.AnimationDirection)
func didFinishAnimation(fromController: UIViewController, toController: UIViewController)
}
并且可以使用如下方式使用它
containerController.animator = .custom(CustomAnimationController())
为了运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install
SwiftyPageController 通过 CocoaPods 提供。要安装
它,只需在 Podfile 中添加以下行
pod "SwiftyPageController"
alkhokhlov, [email protected]
SwiftyPageController 在 MIT 许可下提供。有关更多信息,请参阅 LICENSE 文件。