YHInfiniteScrollView
预览
需求
- Swift 3+
- iOS 9+
安装
YHInfiniteScrollView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'YHInfiniteScrollView'
用法
使用布局约束进行配置
import UIKit
import YHInfiniteScrollView
override func viewDidLoad() {
super.viewDidLoad()
// Create content view controllers or views
let firstViewContorller = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController")
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
let thirdViewController = self.storyboard?.instantiateViewController(withIdentifier: "ThirdViewController")
let fourthViewController = self.storyboard?.instantiateViewController(withIdentifier: "FourthViewController")
let fifthViewController = self.storyboard?.instantiateViewController(withIdentifier: "FifthViewController")
self.addChildViewController(firstViewContorller!)
self.addChildViewController(secondViewController!)
self.addChildViewController(thirdViewController!)
self.addChildViewController(fourthViewController!)
self.addChildViewController(fifthViewController!)
// Initialize infinite scroll view with contents
let infiniteScrollView = YHInfiniteScrollView.init(frame: CGRect.zero,
contentObjects: [firstViewContorller!, secondViewController!, thirdViewController!, fourthViewController!, fifthViewController! ])
infiniteScrollView.translatesAutoresizingMaskIntoConstraints = false
infiniteScrollView.delegate = self
// Add infinite scroll view to container view (assume that existing container view)
self.mainContainer.addSubview(infiniteScrollView)
// Add layuout contraints
let alcTop = NSLayoutConstraint.init(item: infiniteScrollView, attribute: .top, relatedBy: .equal, toItem: self.mainContainer, attribute: .top, multiplier: 1.0, constant: 0.0)
let alcLeading = NSLayoutConstraint.init(item: infiniteScrollView, attribute: .leading, relatedBy: .equal, toItem: self.mainContainer, attribute: .leading, multiplier: 1.0, constant: 0.0)
let alcBottom = NSLayoutConstraint.init(item: infiniteScrollView, attribute: .bottom, relatedBy: .equal, toItem: self.mainContainer, attribute: .bottom, multiplier: 1.0, constant: 0.0)
let alcTrailing = NSLayoutConstraint.init(item: infiniteScrollView, attribute: .trailing, relatedBy: .equal, toItem: self.mainContainer, attribute: .trailing, multiplier: 1.0, constant: 0.0)
self.mainContainer.addConstraints([alcTop, alcLeading, alcBottom, alcTrailing])
}
使用框架进行配置
override func viewDidLoad() {
super.viewDidLoad()
let firstViewContorller = self.storyboard?.instantiateViewController(withIdentifier: "FirstViewController")
let secondViewController = self.storyboard?.instantiateViewController(withIdentifier: "SecondViewController")
let thirdViewController = self.storyboard?.instantiateViewController(withIdentifier: "ThirdViewController")
let fourthViewController = self.storyboard?.instantiateViewController(withIdentifier: "FourthViewController")
let fifthViewController = self.storyboard?.instantiateViewController(withIdentifier: "FifthViewController")
self.addChildViewController(firstViewContorller!)
self.addChildViewController(secondViewController!)
self.addChildViewController(thirdViewController!)
self.addChildViewController(fourthViewController!)
self.addChildViewController(fifthViewController!)
let contentObjects = [firstViewContorller!, secondViewController!, thirdViewController!, fourthViewController!, fifthViewController!]
// Frame for infinite scroll view
let infiniteRect = CGRect.init(origin: .zero, size: CGSize.init(width: SCREEN_WIDTH, height: SCREEN_HEIHGT - STATUSBAR_HEIGHT))
// Initialize infinite scroll view with contents
let infiniteScrollView = YHInfiniteScrollView.init(frame: infiniteRect, contentObjects: contentObjects)
infiniteScrollView.delegate = self
// Add infinite scroll view to container view (assume that existing container view)
self.mainContainer.addSubview(infiniteScrollView)
}
公共方法
func setContentOffset(atIndex: Int)
委托
func didScroll(atContentOffsetX: CGFloat)
func willScrollToNextView(atIndex: Int)
func willScrollToNextView(atIndex: Int, contentObject: Any)
func didScrollToNextView(atIndex: Int)
func didScrollToNextView(atIndex: Int, contentObject: Any)
func willScrollToPreviousView(atIndex: Int)
func willScrollToPreviousView(atIndex: Int, contentObject: Any)
func didScrollToPreviousView(atIndex: Int)
func didScrollToPreviousView(atIndex: Int, contentObject: Any)
作者
Yonghwi ([email protected])
许可协议
YHInfiniteScrollView 在 MIT 许可协议下可用。更多信息请参阅 LICENSE 文件。