我想删除NSOutlineView
的显示/隐藏按钮。因此,我覆盖NSOutlineView
并获取mouseDown
事件。以下是代码。
-(void)mouseDown:(NSEvent *)theEvent
{
NSLog(@"LeftFolderListOutlineView mouseDown");
[super mouseDown:theEvent];
NSPoint localPoint = [self convertPoint:theEvent.locationInWindow
fromView:nil];
NSInteger row = [self rowAtPoint:localPoint];
id clickedItem = [self itemAtRow:row];
if (![clickedItem isKindOfClass:[NSDictionary class]]) {
return;
}
if ([self isItemExpanded:clickedItem]) {
[[self animator] collapseItem:clickedItem];
}else{
[[self animator] expandItem:clickedItem];
}
}
当NSOutlineView崩溃或展开时,它应该是一个滚动动画。但在这种情况下,它不起作用。任何人告诉我为什么以及如何改进它?
答案 0 :(得分:0)
要删除“显示/隐藏按钮”(轮廓单元格),您可以在NSOutliveView子类中实现- (NSRect)frameOfOutlineCellAtRow:(NSInteger)row
方法并返回NSZeroRect。
NSOutlineView折叠/展开动画无法通过animator
制作动画。
仅OS 10.7或更高版本提供折叠/展开动画效果。因此,您计划支持需要提供单独实施的旧操作系统版本。
如果你想在OS 10.6或更低版本上提供折叠/展开动画,你肯定需要覆盖NSOutlineView的'drawRect'。
- 更新 -
对不起,我想我忽略了要点。 10.7扩展/折叠动画仅在用户单击轮廓单元格时自动启动。如果我们想要显示没有默认轮廓单元格的动画,我认为除了手动实现动画效果之外别无他法。
我制作了一个示例项目,通过图像绘制实现展开/折叠动画效果。 在此处查看源代码:https://github.com/roh0sun/ovanimation