NSCollectionView пинч зум - PullRequest
       10

NSCollectionView пинч зум

1 голос
/ 01 августа 2011

Я пытаюсь получить масштабирование в NSCollectionView путем реализации -(void)magnifyWithEvent:(NSEvent *)event, но я не уверен, что делать внутри этого метода. Я получаю величину увеличения с помощью [event magnification], и теперь мне нужно обновить элементы в представлении коллекции.

Я подумал, что могу сохранить это в переменной zoomValue и переопределить метод - (NSCollectionViewItem *)newItemForRepresentedObject:(id)object, чтобы изменить размер представления каждого элемента коллекции (хотя я думаю, что это не будет работать. И в любом случае я не не знает, как вызвать «обновление» представления коллекции).

Есть идеи по этому поводу? Спасибо.

1 Ответ

1 голос
/ 01 августа 2011

Я делаю что-то похожее, но из ползунка вместо щепотки. Вам просто нужно позвонить:

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

Чтобы изменение размера происходило в режиме реального времени во время перетаскивания ползунка, мне пришлось вызвать закрытый метод - [NSCollectionView _updateGridWithCurrentItemsIfNeeded], в противном случае изменение размера не происходило до наведения мыши. Не уверен, что у вас возникнет такая же проблема.

...