NSOutlineView从代码中展开/折叠动画

Nig*_*lve 5 cocoa core-animation nsoutlineview

我想知道如何从代码中动画 NSOutlineView的树节点的扩展/崩溃?

// this works ok but doesn't animate  

NSTreeNode *node = [self.outlineView itemAtRow:self.outlineView.clickedRow];

if([self.outlineView isItemExpanded:node])
{
    [self.outlineView.animator collapseItem:node];
}else{
    [self.outlineView.animator expandItem:node];
}
Run Code Online (Sandbox Code Playgroud)

如果通过默认绘制的箭头展开节点,大纲视图自然会动画,
所以有一种方法......

Nig*_*lve 11

我的原始代码没问题,这在10.7下不可用

OS X v10.8的Application Kit发行说明中的原始文本:

NSOutlineView

以下方法现在支持通过-animator代理进行动画处理:-expandItem:, - expandItem:expandChildren:,--collapseItem:和--collapseItem:collapseChildren:.例如,为特定项目的扩展设置动画:[[outlineView animator] expandItem:item];

  • 如果您使用 Swift,当您尝试键入 `outlineView.animator().ex` 时,您将不会在 Xcode 中自动完成。也许这是一个错误。但如果您手动输入它,它实际上可以工作`outlineView.animator().expandItem(item)`。 (2认同)