如何修复选择NSCollectionViewItem时发生的闪烁?

时间:2013-10-12 16:35:35

标签: objective-c core-animation flicker nscollectionview nspopover

我有一个NSCollectionView,它包含三列NSCollectionViewItems。在每个NSCollectionViewItem原型视图中,我都有一个NSImageView。据我所知,这是一个相当标准的设置。我认为问题源于我使用popover来呈现集合视图,但我老实说不确定。基本上,我遇到的问题是,当我点击上述NSCollectionViewItem之一将其标记为“已选择”时,每隔一段时间它就会闪烁/闪烁。这不是一个彻底的交易破坏者,但它让我发布这个问题很烦人。

来自HTML / CSS / JS游戏,我开始想到在使用网络技术构建内容时我会阻止闪烁的所有方法。我的第一个想法是使NSCollectionView(和子视图)的某些部分支持层。我认为通过图层绘制或只是将集合视图设置为图层支持周期,它会渲染得更好,类似于CSS中的GPU增强动画(例如,没有子像素抗锯齿,可以实现z深度等)。

因此,我将NSCollectionView子类化,并在中添加了[self setWantsLayer:YES] -(id)initWithCoder:aDecoder方法。我是正确的!它完全消除了闪烁。此外,滚动变得更加顺畅。然而,在使闪烁消失的过程中,其他一切都开始变得混乱。加载需要大约10秒才能加载(相对于最初的500毫秒),项目会做出奇怪的重叠等等。

我向你们提出的问题是:我该怎么办?如果有人能帮助兄弟,我真的很感激。

0 个答案:

没有答案