更改 pushViewController 的“动画:”标志更改 SpriteKit 分辨率

Posted

技术标签:

【中文标题】更改 pushViewController 的“动画:”标志更改 SpriteKit 分辨率【英文标题】:Changing pushViewController's "animated:" Flag Changes SpriteKit Resolution 【发布时间】:2014-10-29 22:47:50 【问题描述】:

我有一个子类 UINavigationController,它通过调用 [self pushViewController:controller animated:YES] 在一系列视图控制器中导航。

每个视图控制器都包含一个 SKScene。

视图控制器之间的转换看起来很糟糕,所以我决定通过将动画标志切换为NO 来更改它,即[self pushViewController:controller animated:NO]。但是,当我将此标志从 YES 更改为 NO 时,我的 SKScene 大小会翻倍。就好像它认为我在改变retina/@2x 属性什么的。

为什么动画标志会影响 SKScene 帧大小?以及如何在没有动画的情况下在视图控制器之间进行转换?

【问题讨论】:

您不应该这样做,而是在场景而不是视图及其控制器之间进行转换。为每个“过渡”重新创建 sk 视图效率低下。 总的来说,我同意。但是,这里的问题是我的SKViews 包含在逻辑更改的视图控制器中。这种情况我该怎么办? 好吧,仍然,在 SK 中你有一个视图和一个视图控制器。如果你需要根据场景改变一些逻辑,这个逻辑应该放在场景子类中。您的视图控制器应该只根据需要将任何事件委托给场景以允许场景处理它。在 SK 中,场景有点像给定场景的视图控制器。 嗯。我的项目使用 UICollectionView 来显示 SpriteKit 节点与之交互的网格方块(音乐笔记)。这种实施方式不可取吗?那么我将如何在 SpriteKit 中实现 UICollectionView 呢? 好吧,你不能将精灵“添加”到集合视图中,因为它们本身不是视图 【参考方案1】:

这里的问题在于非视网膜和视网膜资产。确保你有@2x 和常规图片资源,那么你会没事的。

【讨论】:

以上是关于更改 pushViewController 的“动画:”标志更改 SpriteKit 分辨率的主要内容,如果未能解决你的问题,请参考以下文章

直到 pushViewController 才应用外观更改

如何防止 UINavigationController 更改 pushViewController 上的后退按钮:

如何在 leftBarButtonItem 上的 pushViewController 上更改动画方向?

iOS - pushViewController 与 presentModalViewController 的区别

MonoTouch UITableView PushViewController

Xcode 9 更新后 pushViewController 不起作用