2011-08-01 5 views
1

-(void)magnifyWithEvent:(NSEvent *)event을 구현하여 NSCollectionView를 확대/축소하려고했지만이 방법으로 무엇을해야할지 잘 모르겠습니다. [event magnification]으로 줌의 크기를 얻었습니다. 이제 컬렉션보기 내부의 항목을 새로 고침해야합니다. NSCollectionView 핀치 줌

은 내가 변수 zoomValue이 저장하고, 각 컬렉션 항목의보기를 크기를 조정하기 위해 방법 - (NSCollectionViewItem *)newItemForRepresentedObject:(id)object을 무시할 수 있다고 생각 (I이 그래도 작동하지 않습니다 생각합니다. 어쨌든 나는 방법을 모른다 컬렉션 뷰의 "새로 고침"을 트리거합니다).

이것에 대한 아이디어가 있으십니까? 감사합니다.

답변

1

나는 비슷한 것을하고 있지만 핀치 대신 슬라이더를 사용하고 있습니다. 그냥 전화를해야합니다 - 그렇지 않으면 크기 조정 mouseup에 때까지 일어나지 않았다, [NSCollectionView _updateGridWithCurrentItemsIfNecessary]

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

가 크기 조정 슬라이더의 드래그하는 동안 라이브 일에 도착하기 위해, 나는 개인 메소드를 호출했다 . 같은 문제가 생길지 확실하지 않습니다.

+0

감사합니다. 이것이 내가 필요한 것입니다. 단지'_updateGridWithCurrentItemsIfNecessary'가 아직 남아 있습니까? 나는 그것을 발견 할 수 없다. – Donovan

+1

개인적인 방법이므로 문서에서 볼 수 없습니다. 개인이기 때문에 respondsToSelector : checks를 사용하여 개인 메소드에 호출을 래핑하는 것이 중요합니다. 그것은 메인 이벤트 루프를 기다리지 않고 즉시 뷰를 업데이트 할 수있는 유일한 방법이었습니다. –

관련 문제