2011-04-05 89 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:是所有需要的。 這總是很簡單,嘿?

相關問題