【问题标题】:Adding a small UIView to an SKScene向 SKScene 添加一个小的 UIView
【发布时间】:2014-10-25 07:33:59
【问题描述】:

我正在开发一个 Swift + SpriteKit 游戏,我想将一个小的 UITableViewController 插入一个小的 (100 x 200) UIView,然后将该视图添加到我的 SKScene。我正在使用此代码:

class BugsScene: SKScene {

    override func didMoveToView(view: SKView) {

        anchorPoint = CGPoint(x: 0.5, y: 0.5)

        NSUserDefaults.standardUserDefaults().setObject("bugs", forKey: "lastSceneViewed")

        let bugsTableView: BugsTVC = BugsTVC()
        let nav = UINavigationController(rootViewController: bugsTableView)

        let smallerRect = CGRectMake(0, 0, 100, 200)
        let smallerView = UIView(frame: smallerRect)
        smallerView.addSubview(nav.view)
        self.view.addSubview(smallerView)
    }
}

但是,在横向模式下(我的应用只支持左右横向,没有纵向),tableview 占据了横向模式的整个高度,纵向有 iPad 的宽度。

如何在 swift/spritekit 中将一个小的 UIView 添加到一个更大的场景中?

【问题讨论】:

  • 更改视图的框架属性
  • 所以在上面的代码中,我在初始化UIView的时候设置了它的frame。你的意思和这个不同吗?将较小视图的框架与 init 分开设置似乎没有影响。
  • @LearnCocos2D 你的评论是正确的。我的问题是我未能设置导航控制器的框架,其中 tableview 位于。把它变成一个答案,我会选择它作为正确的。谢谢!

标签: uitableview swift sprite-kit


【解决方案1】:

LearnCocos2D 绝对值得称赞,所以如果他发布答案,我会接受。本质上,我没有为导航控制器的视图设置框架。这是我在场景中添加较小视图的方法:

override func didMoveToView(view: SKView) {

        anchorPoint = CGPoint(x: 0.5, y: 0.5)

        self.name = "Bugs Scene"
        backgroundColor = bugsColor

        let smallerRect = CGRectMake(400, 24, 600, 720)
        let navRect = CGRectMake(0, 0, 600, 720)
        let bugsTableView: BugsTVC = BugsTVC()
        nav = UINavigationController(rootViewController: bugsTableView)
        nav.view.frame = navRect
        smallerView = UIView(frame: smallerRect)
        smallerView.backgroundColor = UIColor.clearColor()

        bugsTableView.view.frame = smallerRect
        smallerView.frame = smallerRect
        smallerView.addSubview(nav.view)
        self.view.addSubview(smallerView)


    }

它可能会被改进一些,但这对我有用。现在,如果我只能弄清楚当我转换到另一个场景时如何移除视图!

【讨论】:

  • 能否请您给我看一下您的表格类,因为我按照这个方法但表格没有出现,UIView 和导航显示。
  • 嗨 Abdou023。自从问了这个问题后,我最终在 SpriteKit 中重写了所有内容,并且不再在我的 SpriteKit 应用程序中使用任何 UIKit 元素。两者只是不能很好地结合在一起。
  • 那么,您使用 SpriteKit 框架替代了 UITableView 吗?
  • 我希望!我不记得我是如何重新设计我正在开发的应用程序以不使用 UITableView 的,但这至少是我做出的决定。我已经很长时间没有在那个应用程序上工作了。然而,SpriteKit 肯定会受益于一些更有用的 UIKit 元素的等价物。 UIScrollView,有人吗?多行标签? SpriteKit 缺少很多东西。
  • 要从场景中移除视图,在更改场景之前添加行 view.removeFromSuperview()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多