gpt4 book ai didi

ios - 在 SpriteKit 中创建可滚动表格的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 05:12:41 26 4
gpt4 key购买 nike

我需要一种显示排行榜的方法 - 最佳用户分数(本地用户,本地分数)。

我是否需要为这种事情创建自己的“自己的”节点,或者最好在透明背景的 SKView 之上使用 UITableView?

最佳答案

我使用的方法是:

  1. 在场景的 didMoveToView: 方法中,设置一个 UIScrollView 实例。设置您需要的所有属性,并确保还设置其委托(delegate),设置 hidden=YES 并将其 panGestureREcognizer 添加到 View 手势识别器集合。

  2. 在 willMoveFromView 中:将其拆除并清理。

  3. 在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com