我需要一种显示排行榜的方法 - 最佳用户分数(本地用户,本地分数)。
我是否需要为这种事情创建自己的“自己的”节点,或者最好在透明背景的 SKView 之上使用 UITableView?
最佳答案
我使用的方法是:
在场景的 didMoveToView: 方法中,设置一个 UIScrollView 实例。设置您需要的所有属性,并确保还设置其委托(delegate),设置 hidden=YES 并将其 panGestureREcognizer 添加到 View 手势识别器集合。
在 willMoveFromView 中:将其拆除并清理。
在 ScrollView 委托(delegate)中,实现 scrollViewDidScroll:。在这里您可以使用 ScrollView 的 contentOffset 点来调整节点的位置。
我已经实现了一个可偏移节点,我将其用作需要滚动的内容的根节点。它所做的只是实现一个 contentOffset 属性——您可以在这里看到它:CATOffsetNode Gist .
所以在 scrollViewDidScroll: 中我需要做的就是:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
// I don't need to flip scrollView.contentOffset.Y because my scrollview
// Y coordinate is flipped. See below.
self->_gameListNode.contentOffset = scrollView.contentOffset;
}
然后我将需要滚动的所有项目添加为 _gameListNode 的子项。
结果是一个可滚动的游戏列表,它提供了原生的 ScrollView 体验,包括弹跳和滑动加速等。
这是您可以查看的示例实现:ScrollKit on GitHub .
编辑:关于 scrollview contentOffset Y 方向的注释:
UIView 和 SpriteKit Y 坐标方向相反(UIView 的原点在左上,Y 向下增加),我更喜欢坚持一个坐标系。所以我制作了一个自定义 ScrollView 类,它在初始化程序中翻转 Y 方向。例如:
-(id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1);
self.transform = verticalFlip;
}
return self;
}
这不是必需的(您甚至不需要子类化 UIScrollView 来实现此目的)但如果没有这个,您将不得不在 ScrollView 委托(delegate)中手动翻转 contentOffset.Y。
关于ios - 在 SpriteKit 中创建可滚动表格的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22279112/