And*_*mig 5 objective-c uitableview ipad ios sprite-kit
我需要一种方法来显示排行榜 - 最佳用户分数(本地用户,本地分数).
我是否需要为这种事情创建我自己的"自己的"节点,或者更好地在透明背景上使用SKView上面的UITableView?
我使用的方法是:
在场景的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;
}
Run Code Online (Sandbox Code Playgroud)
然后我添加了我需要滚动的所有项目作为_gameListNode的子项.
结果是一个可滚动的游戏列表,提供原生的滚动视图体验,包括弹跳和滑动加速等.
以下是您可以查看的示例实现:GitHub上的ScrollKit.
编辑:关于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;
}
Run Code Online (Sandbox Code Playgroud)
这不是必需的(你甚至不需要子类UIScrollView来实现这一点)但如果没有这个,你将不得不在scrollview委托中手动翻转contentOffset.Y.
| 归档时间: |
|
| 查看次数: |
4489 次 |
| 最近记录: |