2016-11-16 27 views
0

我面臨着在Mac中設置NSTextFieldCell框架的問題。我的NSTextFieldCell位於列的(0,0)點。我需要在y位置有4px的差距。以下是現有用戶界面的圖像。如何在NSTableView中設置NSTextFieldCell的框架

Existing Column

這裏是的.xib結構如下:

enter image description here

委託方法下,我想設置的框爲下:

- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)aRow 
{ 
    if ([[aTableColumn identifier] isEqualToString:@"notes"]) 
    { 
     [aCell setBackgroundColor:[NSColor redColor]]; 

     NSTextFieldCell *theCellView = aCell; 
     NSView *controlView = [theCellView controlView]; 
     NSRect frame = controlView.frame; 
     frame.origin.x = 120; 
     frame.origin.y = 130; 
     [controlView setFrame:frame];  
    } 
} 
+0

表視圖應該是基於視圖還是基於單元格? – Willeke

+0

謝謝@Willeke。它基於細胞。 – TechBee

+0

單元格的controlView是表格視圖。 – Willeke

回答

2

單元格沒有框架。單元是輕量級的對象,它繪製擁有的控制視圖告訴他們的位置。表格視圖可以使用單個單元格繪製給定列的所有行。它將計算列的一行的幀,用來自該行和列的值配置單元格,並告訴單元在它計算的幀中繪製自己。然後,它會爲下一行配置單元格,並告訴單元格在該行的框架中繪製自己。等等

所以,你需要專注於表格視圖,而不是單元格來影響單元格繪製的框架,因爲它是計算該框架的表格視圖。您是否嘗試過設置intercellSpacing以獲得非零值height

此外,你應該考慮轉換到一個基於視圖的表格視圖,你有更大的控制。

+0

謝謝你。該應用程序已經開發,所以沒有重新開發的範圍。我會嘗試intercellSpacing。其實我需要5px的填充。嘗試與NSMutableParagraph但沒有運氣。 – TechBee

相關問題