我希望在Things应用程序中完成与特殊项目相同的行为。我的意思是补充工具栏底部的 Logbook 和 Trash 项目:
Logbook and Trash items are in the most bottom http://tinyurl.com/lhctza
请建议以任何方式在侧栏树中实现相同的功能。
我觉得特殊的'spacer'树项应该与outlineView:heightOfRowByItem:
方法一起使用。
但是,我找不到如何计算所有可见项目的总高度(包括组间空间)。
答案 0 :(得分:3)
您可以尝试简单地使用两个轮廓视图:一个固定高度,固定在超视图的底部,另一个是可变高度,其底部位于第一个顶部的顶部。固定高度的轮廓视图将包含那些日志和废纸篓项目,可变高度轮廓视图将包含所有其他项目。
棘手的部分是通过滚动视图使这个游戏变得漂亮,但我认为你可以做到。我想你会把它们都放在一个完全可调整大小的NSView中,然后把它作为滚动视图的文档视图。
答案 1 :(得分:1)
我决定通过为组样式中的每个根项添加8个像素的高度来对解决方案进行硬编码。 所以,代码看起来像这样:
- (CGFloat)outlineView:(NSOutlineView *)ov heightOfRowByItem:(id)item;
{
if (![item isSpacer]) return [ov rowHeight];
static const CGFloat ADDITIONAL_SPACE = 8.0f;
NSUInteger numberOfRootGroups = 2;
CGFloat heightOfRows = [ov rowHeight] * ([ov rowForItem:item] + 1)
+ ADDITIONAL_SPACE * numberOfRootGroups;
CGFloat heightOfSidebar = [[ov superview] frame].size.height;
return MAX(0.0f, heightOfSidebar - heightOfRows);
}
感谢大家的支持!