调整NSView的大小以适应子视图
让我的PXListView和NSScrollView设置运行良好,我遇到了极大的困难。
这是它的要点:
我有一个仪表板页面,包含2个PXListViews。其中一个从Core Data获取数据,另一个从RSS Feed获取。这两个都被添加到superview和相关的控制器(我有Dashboard以外的模式,所以这是最有效的方式)。
这个superview成为我的NSScrollView的documentView。
除了使用基于RSS源的列表视图外,我可以很好地完成所有这些工作。
我异步获取提要,因此它不会阻止用户界面,一旦收到提要并填充了列表视图,我就会自动调整自身大小。
这一切都很好,但是我需要调整我的仪表板视图的大小以使滚动条向上移动。所以我发送一个通知,导致我创建的autosizeView方法,但一切都下地狱。
两个ListView开始重叠,顶部的内容最终在底部。下面的截图(红色是边界矩形,蓝色是每个子视图的框架)
这是在调用autosizeView之前:
这是在调用之后:
并且为了更好地衡量,如果我调整PXListViews并且不调用DashboardView的自动调整方法,这就是它的样子:
正如你所看到的,只要我不调用autosizeViews它就可以正常运行但是我没有得到滚动条。这是我的autosizeView方法:
-(void)autosizeView
{
//Resize the view to accommodate all subviews
NSRect oldFrame = [[self view] frame];
CGFloat lastY = [_activityView frame].origin.y;
if (lastY < 0) {
CGFloat newHeight = oldFrame.size.height + (-lastY);
[[self view] setFrameSize:NSMakeSize(oldFrame.size.width, newHeight)];
}
}
我猜这个整个事情与我调整DashboardView大小时的坐标有关,导致其子视图的起源出错。
任何帮助将不胜感激!!!
没有找到相关结果
已邀请:
1 个回复
姬第柔炒