我在 Mac 应用程序中有一个 NSScrollView,我正在迭代地添加(相同的)子视图。但是,当窗口出现时,滚动视图的底部是可见的,但是,滚动条位于顶部。向上或向下滚动最初会导致滚动视图快速跳转到某个位置,然后它会像往常一样平滑滚动。此外,它似乎在底部添加了一个大的空白区域,但这可能只是我的代码。
for (int i=0; i<[userList count]; i++) { ///user list is an array of ID strings
PaneViewController *pane = [[PaneViewController alloc] initWithNibName:@"PaneViewController" bundle:nil];
[pane setPaneID:[userList objectAtIndex:i]];
pane.view.frame = CGRectMake(0, (i*pane.view.frame.size.height), pane.view.frame.size.width, pane.view.frame.size.height);
[self.scrollView.contentView addSubview:pane.view];
}
[self.scrollView.documentView setFrame:CGRectMake(0, 0, self.scrollView.frame.size.width, ([userList count])*125)]; /// 125 is the height of the paneView
[self.scrollView.verticalScroller setFloatValue:0.0];
当该行显示相同的行为
[self.scrollView.contentView addSubview:pane.view];
改为
[self.scrollView.documentView addSubview:pane.view];
最后,虽然我没有测试它,因为视图是相同的,但我的直觉告诉我这将从下到上填充,即,[userList objectAtIndex:0]
将分配给列表底部的视图,因为 Cocoas 古怪的坐标系统。这是真的吗?如果是这样,我该如何解决?
PS - 滚动视图在 Interface Builder 中设置,如果这很重要。此外,出于多种原因,使用 NSListView 而不是 NSScrollView 并不是一个真正的选择。