测试测试过 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年10月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 Bruno Fulber Wide 维护。
专为Sprite Kit创建的collectionView
如果您计划上传应用程序,必须在Carthage的README中遵循有关向iOS、tvOS或watchOS应用添加框架的额外说明。
CollectionNodeScene
类中导入CollectionNode
模块import CollectionNode
CollectionNode
添加到CollectionNodeScene
并设置它的dataSource和Delegateprivate var myCollectionNode: CollectionNode!
override func didMove(to view: SKView) {
myCollectionNode = CollectionNode(at: view)
myCollectionNode.dataSource = self
myCollectionNode.delegate = self
addChild(myCollectionNode)
}
CollectionNodeScene
符合CollectionNodeDataSource
并实现所有的方法extension GameScene: CollectionNodeDataSource {
func numberOfItems() -> Int {
return EmojiModel.default.emojis.count
}
func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem {
//create and configure items
let item = EmojiItem()
item.emoji = EmojiModel.default.emojis[index]
return item
}
}
CollectionNodeDelegate
并重写您需要的方法extension GameScene: CollectionNodeDelegate {
func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) {
let growAction = SKAction.scale(to: 1.3, duration: 0.15)
let shrinkAction = SKAction.scale(to: 1, duration: 0.15)
collectionNode.item(at: index).run(growAction)
collectionNode.children.filter{ emojiCollection.children.index(of: $0) != index }.forEach{ $0.run(shrinkAction) }
}
func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index) {
print("selected \(item.name ?? "noNameItem") at index \(index)")
}
}
CollectionNode
将默认实现工作。如果您想自定义行为,则可以重写它。使用方法与已知的UICollectionView非常相似。创建您的BWCollectionView
对象后,您需要通过一个dataSource对象向其提供一些数据来显示。该对象是符合BWCollectionViewDataSource
协议的任何对象。
private(set) public var index: Int
CollectionNode的当前索引
public weak var dataSource: CollectionNodeDataSource?
作为collectionView数据源的对象
public weak var delegate: CollectionNodeDelegate?
作为collectionView代理的对象
public var spaceBetweenItems: CGFloat
CollectionNode元素之间的间距
public var items: [CollectionNodeItem]
返回此节点上的所有子项,它们都是CollectionNodeItems
public func update(_ currentTime: TimeInterval, dampingRatio: Double)
需要在场景更新时调用。允许此节点在触摸释放时进行动画处理
阻尼率:collectionNode减速度的比率(0到1表示松开触摸时减速的百分比,默认为1%)
public func snap(to index: Index, withDuration duration: Double)
移动到给定索引处的项目
持续时间:收缩动画的持续时间(秒,默认为0.3)
public func reloadData()
重新加载collection中的所有项目
func collectionNode(_ collectionNode: CollectionNode, didShowItemAt index: Index) -> Void
返回要在此collectionNode上显示的项目数
func collectionNode(_ collectionNode: CollectionNode, didSelectItem item: CollectionNodeItem, at index: Index ) -> Void
每次选择一个项目时都会调用
func numberOfItems() -> Int
在这里,您应该说明这个collection将显示多少个项目
func collectionNode(_ collection: CollectionNode, itemFor index: Index) -> CollectionNodeItem
在这里,您应该返回每个索引处的collectionVIew的项目
update(_ currentTime:)
方法,才能使其正常运行