0

我很难让我的 PXListView 和 NSScrollView 设置正常工作。这是它的要点:

我有一个包含 2 个 PXListViews 的仪表板页面。其中一个从 Core Data 获取数据,另一个从 RSS Feed 获取数据。这两个都添加到超级视图和关联的控制器中(我有仪表板以外的模式,所以这是最有效的方法)。这个超级视图成为我的 NSScrollView 的文档视图。

除了基于 RSS 提要的列表视图之外,我可以让所有这些都很好地工作。我异步获取提要,这样它就不会占用 UI,一旦收到提要并填充列表视图,我就会自动调整其大小。这一切都很好,但是我需要调整仪表板视图的大小以使滚动条向上。所以我发送了一个通知,该通知导致我创建了一个 autosizeView 方法,但这一切都陷入了困境。

两个 ListView 开始重叠,顶部的内容最终出现在底部。下面的截图(红色是边界矩形,蓝色是每个子视图的框架)

这是在调用 autosizeView 之前:在此处输入图像描述

这是在调用它之后: 在此处输入图像描述

为了更好地衡量,如果我调整 PXListViews 的大小并且不调用 DashboardView 的 autosize 方法,这就是它的样子: 在此处输入图像描述

正如您所看到的,只要我不调用 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 大小时坐标被弄乱有关,导致其子视图的起源出错。

任何帮助将不胜感激!!!

4

1 回答 1

0

好吧,我最终解决了它。事实证明,故障是由 PXListView 在调整其超级视图大小时自动更改其高度引起的。只需使用 setAutoresizeMask: 进行快速更改。总是很简单,嘿?

于 2011-04-06T00:53:25.207 回答