我在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 whacky坐标系。这是真的,如果是这样,我该如何解决?
P.S。 - 滚动视图在Interface Builder中设置,如果重要的话。此外,出于多种原因,使用NSListView而不是NSScrollView实际上并不是一种选择。
答案 0 :(得分:0)
[self.scrollView.verticalScroller setFloatValue:0.0];
[self.scrollView reflectScrolledClipView:self.scrollView.contentView];