调整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大小时的坐标有关,导致其子视图的起源出错。 任何帮助将不胜感激!!!     
已邀请:
好吧,我最终解决了它。 由于PXListView在超级视图调整大小时自动改变高度,因此引起的故障已经引起。快速更改使用setAutoresizeMask:只需要它。 它总是很简单嘿?     

要回复问题请先登录注册