SpriteKit,Swift - 滚动视图不显示
Posted
技术标签:
【中文标题】SpriteKit,Swift - 滚动视图不显示【英文标题】:SpriteKit, Swift - ScrollView Not Showing Up 【发布时间】:2016-01-09 17:44:17 【问题描述】:好的,所以我用这个方法实现了一个滚动视图:
How to create a vertical scrolling menu in spritekit?
现在,当我启动场景时,除了黑色/灰色背景外,它不显示任何内容
这是我在菜单场景中使用的代码:
import Foundation
import SpriteKit
import UIKit
//let kMargin: CGFloat = 40
//var backButton = SKSpriteNode()
//var selectButton = SKSpriteNode()
var moveableNode = SKNode()
var scrollView: CustomScrollView!
private var imageSize = CGSize.zero
var sprite = SKSpriteNode()
class Menu: SKScene
func didMoveToView()
addChild(moveableNode)
scrollView = CustomScrollView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height), scene: self, moveableNode: moveableNode)
scrollView.contentSize = CGSizeMake(self.frame.size.width, self.frame.size.height * 2)
view!.addSubview(scrollView)
sprite = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 44))
sprite.position.y = CGRectGetMidY(self.frame) + self.frame.size.height
moveableNode.addChild(sprite)
这可能很明显,但我似乎看不到。
【问题讨论】:
【参考方案1】:试试这个精灵,我在另一个问题中犯了一个错误,它应该是-self.frame.size.height,而不是+。
sprite = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 50, height: 44))
sprite.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame) - self.frame.size.height)
moveableNode.addChild(sprite)
检查我的 gitHub 项目
https://github.com/crashoverride777/Swift-2-SpriteKit-UIScrollView-Helper
【讨论】:
那行不通。如果有任何帮助,我正在尝试使滚动视图水平而不是垂直,并且我并没有真正了解我应该如何使用内容偏移,所以我只是跳过了它。但我确实改变了你说要改变的东西,比如委托部分和 spritekit 的翻转。 这似乎也不起作用。我启动菜单场景时的节点数也显示它只有 1 个节点 这绝对有效,我只是在示例项目中尝试了代码。我只是把它放在github上,看看。 github.com/crashoverride777/Swift-2-CustomScrollView-SpriteKit 好的,我查看了您的项目,这对于查看我哪里出错非常有用。但现在我在它的滚动方面遇到了另一个问题。当我向右滚动时,它似乎只滚动一点并停止,但是当我向左滚动时,它滚动得很远。我想从最左边开始场景并向右滚动。 (我应该再做一个问题吗?) 请将我的答案标记为正确。对于水平滚动,它更加棘手,因为您需要以相反的方式定位东西。 UIKit 的坐标与 Spritekit 不同。你需要阅读我解释的我的 gitHub 项目。否则,如果您仍然卡住,请再问一个问题。【参考方案2】:精灵位置不正确,不确定您想要的位置。我执行以下操作,精灵就会出现在视图中。
sprite.position = CGPoint(x: 200, y: 200)
或
// To make it a center of the view
sprite.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2)
【讨论】:
以上是关于SpriteKit,Swift - 滚动视图不显示的主要内容,如果未能解决你的问题,请参考以下文章
如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中
为啥集合视图中的动态集合单元格不显示为给定大小并且在 swift 3 中滚动后会发生变化