CollectionViewIndex
视图可复制内置的UITableView
部分索引,用于UICollectionView
。
UITableView
使用名为UITableViewIndex
的私有类来提供此行为。CollectionViewIndex
遵循相同的命名约定。
安装
使用CocoaPods安装,将以下内容添加到您的Podfile中
use_frameworks!
pod 'CollectionViewIndex'
然后运行
pod install
使用方式
创建一个CollectionViewIndex
的实例,并将其添加到您的UICollectionView
实例的父视图,并在其前面
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(collectionView)
view.addSubview(collectionViewIndex)
let views: [String: AnyObject] = [
"topLayoutGuide": topLayoutGuide,
"bottomLayoutGuide": bottomLayoutGuide,
"collectionView": collectionView,
"collectionViewIndex": collectionViewIndex,
]
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("|[collectionView]|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[collectionView]|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("[collectionViewIndex]|", options: [], metrics: nil, views: views))
view.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[topLayoutGuide][collectionViewIndex][bottomLayoutGuide]", options: [], metrics: nil, views: views))
}
如同UILabel
一样,CollectionViewIndex
需要在知道其高度后才能知道它需要多宽。当使用Auto Layout时,您可以这样设置对象的preferredMaxLayoutHeight
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
collectionViewIndex.preferredMaxLayoutHeight = view.bounds.height - topLayoutGuide.length - bottomLayoutGuide.length
}
您的集合视图布局可能需要知道CollectionViewIndex
对象的宽度。如果是这样,您可以在布局完成后通知它
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
collectionViewLayout.indexWidth = collectionViewIndex.bounds.width
}
CollectionViewIndex
在用户与之交互时发送一个UIControlEvent.ValueChanged
事件。您可以通过这种方式注册目标-动作方法
collectionViewIndex.addTarget(self, action: "selectedIndexDidChange:", forControlEvents: .ValueChanged)
func selectedIndexDidChange(collectionViewIndex: CollectionViewIndex) {
print("User selected index \(collectionViewIndex.selectedIndex)")
}
您可能希望在响应此事件的情况下跳转到集合视图的某个部分。如果您的部分标题固定在可见边界内,确保在滚动时考虑到它们。
许可协议
CollectionViewIndex 在MIT许可证下发布。有关详情请参阅LICENSE。