我以编程方式在我的 NSCollectionView 中选择一个项目。该项目已按预期选择,但视图不会自动滚动到该项目。
[collectionView setSelectionIndexes:[NSIndexSet indexSetWithIndex:compt]];
如何滚动到所选项目?
我以编程方式在我的 NSCollectionView 中选择一个项目。该项目已按预期选择,但视图不会自动滚动到该项目。
[collectionView setSelectionIndexes:[NSIndexSet indexSetWithIndex:compt]];
如何滚动到所选项目?
在这里找到答案NSScrollView:确保框架可见
这段代码对我有用:
NSRect selectionRect = [self.collectionView frameForItemAtIndex:[[self.collectionView selectionIndexes] firstIndex]];
[self.collectionView scrollRectToVisible:selectionRect];
由于新的 NSCollectionView 中的 OS X 10.11,您应该改用:
[self.collectionView scrollToItemsAtIndexPaths:[self.collectionView selectionIndexPaths] scrollPosition:NSCollectionViewScrollPositionCenteredHorizontally];
测试:Swift 4.2。Xcode 10.2。macOS 10.14.5 测试版
if let indexPath = indexPaths.first {
if #available(OSX 10.12, *) {
NSAnimationContext.runAnimationGroup { (context) in
context.duration = 0.8
context.allowsImplicitAnimation = true
collectionView.scrollToItems(at: [indexPath], scrollPosition: NSCollectionView.ScrollPosition.bottom)
}
} else {
collectionView.scrollToItems(at: [indexPath], scrollPosition: NSCollectionView.ScrollPosition.bottom)
}
}
让 scrollPositionX: CGFloat = videoThumbCollectionView.visibleRect.origin.x + 150.0 videoThumbCollectionView.scroll(NSPoint(x: scrollPositionX, y: videoThumbCollectionView.visibleRect.origin.y))
对于斯威夫特 4
collectionView.scrollToItems(at: [collectionView.selectionIndexPaths.first!], scrollPosition: NSCollectionView.ScrollPosition.centeredHorizontally)