2014-03-05 209 views
2

我創建了一個基於視圖的NSOutlineView與圖像和徽章(內聯按鈕)。雖然自定義單元格是足夠寬,我有以下問題:NSOutlineView奇怪的填充裁剪徽章

enter image description here

所以沒有從中覆蓋我的徽章(該NSOutlineView嵌入在滾動型,這在SPLITVIEW)右邊一個奇怪的保證金。

任何想法,我怎麼能刪除這個邊界/覆蓋?

+0

可能滾動條... – Volker

+1

我也想過。我禁用了垂直滾動條,沒有幫助 – Lupurus

+0

沒有人有任何想法?同樣,大綱視圖內的所有其他視圖(例如文本框)都會被裁剪掉。您也可以在Mac OS Finder或Mail等中看到這種效果。我想,它確實需要對滾動條做些什麼。大綱視圖內的單元格自動調整大小比大綱視圖本身小一點。通過手動增加IB中單元格的寬度,文本不會被裁剪,但是我的徽章不會再對自動調整作出響應(是的,我仍然使用這個而不是自動佈局;)) – Lupurus

回答

0

好吧,我最近的評論給我的答案;) 據我所知,這是一個真正的滾動問題,無論它是否隱藏或不。我認爲這是一個較舊的OS X版本的遺留問題,滾動條永久顯示。當您調整大綱視圖的大小(嵌入在滾動視圖中並嵌入到分割視圖中)時,單元格的寬度會自動變得比大綱視圖的寬度稍小(可能是因爲NSScrollView代碼認爲它必須調整由於滾動條)。

所以我子類NSTableCellView(我使用viewbased outlineview),並將此:

- (void)setFrameSize:(NSSize)newSize { 
    //resize the textframe, so that it will not be cropped too early with "..." 
    NSRect textFrame = self.textField.frame; 
    textFrame.size.width = newSize.width; 
    self.textField.frame = textFrame; 

    //increase the size of the whole cell 
    newSize.width = newSize.width + 10.0; 

    [super setFrameSize:newSize]; 
} 

你也必須增加textframe的寬度,因爲 - 你可以在Finder或郵件等見 - 單元格的文本很早被裁剪(「...」)。通過增加它的寬度,這個問題也解決了。

我希望,這說明幾乎是可以理解的;)