2011-08-01 146 views
1

我想通过执行-(void)magnifyWithEvent:(NSEvent *)event捏缩放在NSCollectionView,但我不知道该做什么在这种方法。我得到的缩放量为[event magnification],现在我需要刷新收藏视图中的项目。NSCollectionView捏缩放

我以为我可以将其保存在变量zoomValue中,并覆盖方法- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object以调整每个收集项目的视图(我认为这不起作用,但无论如何我不知道如何触发集合视图的“刷新”)。

对此有何想法? 谢谢。

回答

1

我正在做类似的事情,但从滑块而不是捏。 你只需要调用:

[collectionView setMinItemSize:newSize]; 
[collectionView setMaxItemSize:newSize]; 
[collectionView setNeedsDisplay:YES]; 

要到发生滑动的阻力在现场调整大小,我不得不打电话的私有方法 - [NSCollectionView _updateGridWithCurrentItemsIfNecessary],否则调整大小并没有发生,直到鼠标松开。不知道你是否会遇到同样的问题。

+0

谢谢,这是我需要的。请注意,“_updateGridWithCurrentItemsIfNecessary”还在吗?我找不到它。 – Donovan

+1

这是一个私人方法,所以你不会在文档中看到它。由于它是私有的,因此使用respondsToSelector将调用包装为私有方法非常重要:检查。这是我能够立即让视图更新而不是等待主事件循环的唯一方法。 –