【发布时间】:2015-10-19 19:27:43
【问题描述】:
将空的 SKView 添加到 UICollectionView 单元格使得在 iPhone 6 (iOS 9.x) 上滚动几乎不可能。假设集合视图包含 6 个项目,其中前 3 个是可见的,接下来 3 个项目的水平滚动需要 3 秒的抖动。
下面是相关的代码部分:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(ACDFilterCollectionViewCellConstants.CellIdentifier, forIndexPath: indexPath) as! ACDFilterCollectionViewCell
let filterType = filters[indexPath.row]
cell.titleLabel.text = filterType.rawValue
let skview = SKView(frame: cell.frame)
cell.filterView.addSubview(skview)
return cell
}
我应该怎么做才能在我的 UICollectionViewCells 中使用 SKViews 平滑滚动?
在 iOS 8.x 上,渲染此视图时出现异常:
【问题讨论】:
-
我在开发者论坛上看到过类似的(或者我可以说是一样的)问题......显然是什么导致了 fps 下降......但实际上,你为什么要这样使用 UICollectionView (混合UIKit 和 SpriteKit)?您确定仅使用 SpriteKit 无法制作所需的一切吗?
-
我使用 SpriteKit 仅通过自定义着色器绘制 UIBezierPath,然后我将其添加到我的 UIView/UICollectionViewCell。在我开始滚动之前,呈现在单元格或 UICollectionView 之外的其他视图中的形状看起来非常正常。
-
现在除非我们获得更多信息,否则 Caleb 的答案是您将获得的最佳答案。你到底想达到什么目的?这些可以预渲染并作为 PNG 添加到您的应用中,或者像 Caleb 所说的那样在屏幕外渲染和缓存吗?
-
我很困惑你说这是一个 iOS 9 问题,但你提到你在 iOS 8 上抛出异常。我认为这在 iOS 8 上也不起作用?
-
@DRHaus 我试图在 iOS 8 和 iOS 9 上使用 SKView 平滑滚动集合视图。出于好奇,我确实尝试过使用图像方法,但它没有用,但那不是什么无论如何我都想要,我希望形状是可动画的。
标签: ios iphone sprite-kit uikit uicollectionview