我需要一种方法来显示排行榜 - 最佳用户分数(本地用户,本地分数)。
我是否需要为此类事物创建“自己的”节点,或者更好地使用透明背景的SKView上方的UITableView?
答案 0 :(得分:8)
我使用的方法是:
在场景的didMoveToView:方法中,设置一个UIScrollView实例。设置所需的所有属性,并确保还设置其委托,设置hidden = YES并将其panGestureREcognizer添加到视图手势识别器集合。
在willMoveFromView中:将其拆除并清理干净。
在scrollview委托中,实现scrollViewDidScroll:。在这里,您可以使用滚动视图的contentOffset点来调整节点的位置。
我已经实现了一个offsetable节点,我用它作为根节点来处理我需要滚动的东西。它所做的就是实现一个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的子项。
结果是一个可滚动的游戏列表,提供原生的滚动视图体验,包括弹性和滑动加速等。
以下是您可以查看的示例实现:ScrollKit on GitHub。
编辑:请注意有关scrollview contentOffset Y方向:
UIView和SpriteKit Y坐标向相反方向移动(UIView的原点在左上方,Y向下增加),我更喜欢坚持一个坐标系。所以我创建了一个自定义的scrollview类,它在初始化器中翻转Y方向。 E.g:
-(id)initWithFrame:(CGRect)frame
{
if (self = [super initWithFrame:frame])
{
CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1);
self.transform = verticalFlip;
}
return self;
}
这不是必需的(你甚至不需要子类化UIScrollView来实现这一点)但如果没有这个,你必须在scrollview委托中手动翻转contentOffset.Y。
答案 1 :(得分:0)
游戏中心提供排行榜。也许你可以使用那些? Game Center Programming Guide