2011-04-05 103 views
0

我在使PXListView和NSScrollView安装程序很好地工作时遇到了极大的困难。 这是它的要点:调整NSView以容纳子视图

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

我可以很好地工作,除了基于RSS提要的列表视图。 我正在异步获取供稿,因此它不会占据用户界面,并且一旦收到供稿并填充列表视图,我就会自动调整其大小。 这一切都很好,但是我需要重新调整我的仪表板视图以获得滚动条。所以我发送了一个通知,导致我创建的autosizeView方法,但这一切都到了地狱。

两个ListView开始重叠,顶部的内容结束了。下面的截图(红色是边界矩形,每个子视图的蓝色框)

这是调用之前autosizeView:enter image description here

这是调用它后: enter image description here

和良好的措施,这是它是什么样子,如果我调整PXListViews不叫DashboardView的自动调整方法: enter image description here

正如你所看到的,它工作得很好,只要我不叫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

那么我最终解决了这个问题。 由于PXListView自动改变了它们的超高视图大小,它们的高度已经引起了毛病。快速更改使用setAutoresizeMask:是所有需要的。 这总是很简单,嘿?