我在使用PXListView和NSScrollView设置很好地工作时遇到了极大的困难。 这是它的要点:
我有一个包含2个PXListViews的仪表板页面。其中一个从Core Data获取数据,另一个从RSS Feed获取。这两个都被添加到superview和相关的控制器(我有Dashboard以外的模式,所以这是最有效的方式)。 这个superview成为我的NSScrollView的documentView。
除了使用基于RSS Feed的List View之外,我可以很好地完成所有这些工作。 我异步获取提要,因此它不会阻止用户界面,一旦收到提要并填充了列表视图,我就会自动调整自身大小。 这一切都很好,但是我需要调整我的仪表板视图的大小以使滚动条向上移动。所以我发送一个通知,导致我创建的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的大小时坐标被搞乱有关,导致其子视图的起源出错。
任何帮助将不胜感激!!!
答案 0 :(得分:0)
好吧,我最终解决了它。 由于PXListView在超级视图调整大小时自动改变高度,因此引起的故障已经引起。快速更改使用setAutoresizeMask:只需要它。 它总是很简单嘿?