ios - 将 UIScrollView 与 SpriteKit 一起使用时出现随机问题

标签 ios iphone objective-c uiscrollview sprite-kit

我在滚动时遇到卡顿/滞后现象。

它只出现在 iPhone5 och 上,很少出现在 iPhone 5s 上。 它只在按住手指时出现,而不是在 ScrollView 减速时出现。 它看起来非常随机,但一旦开始滞后,它总会持续一段时间。

可能是跳出主屏再跳回主屏几次触发(有时一会有效,有时卡顿几乎一直出现)。正如我所说,它是随机发生的,所以如果您尝试这个示例项目并且没有看到任何卡顿,请耐心等待并尝试更多。

示例工程是基于SpriteKit游戏模板,为了方便调试,我尽量少改动。

示例项目:https://github.com/bobmoff/ScrollStudderingExample

我正在就此事与 Apple 支持人员联系,但到目前为止,他们只提到他们会将其发送给从事 SpriteKit 工作的技术人员,然后再回复我。

我已经为这个问题苦苦挣扎了大约一年,所以如果有人想出一个真正的解决方案来解决为什么会发生这种情况,我会高兴得哭出来。

最佳答案

这只是一个想法:您是否尝试过将 scrollViewDidScroll 方法与动画解耦? (就像 Javacript 中的“去抖动”滚动事件。)

我现在无法测试它,并不是说这是好的做法,但我很好奇这是否能解决问题……


抽象示例:

某处的全局变量:

CGPoint globalVar;


在 View Controller 中:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    globalVar = scrollView.contentOffset;
}


在 SKScene 中:

-(void)update:(CFTimeInterval)currentTime {

     spriteToScroll.position = globalVar;
}

关于ios - 将 UIScrollView 与 SpriteKit 一起使用时出现随机问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22425449/

相关文章:

ios - 你如何从 UIImagePickerController 获取图像文件名?

objective-c - NSDateComponents:weekOfYear 和 weekOfMonth 的区别

ios - 从 Kotlin Native 继承 UIView

ios - swift 3 iOS 兼容性

ios - <select> 标签不会在 iPhone 上保留背景颜色

ios - images.xcassets 添加 iPhone 6 和 iPhone 6 plus 图片

objective-c - cocoa :如何重新打开关闭的窗口?

ios - 在整个 segue 中保持屏幕上的容器 View

iphone - 将程序化 C openGL 函数添加到 iPhone 项目

iphone - 命令/bin/sh 失败,退出代码为 1 三 20-