2013-06-13 2 views
1

동적으로 NSOutlineView의 모든 셀의 글꼴 크기를 변경하고 있습니다. (효과를 과장 글꼴 크기) :전체 NSTableView/NSOutlineView의 글꼴 크기 다음에 동적으로 행 높이를 변경합니다.

id cell = [myOutlineColumn dataCell]; 
[cell setFont: [NSFont fontWithName: @"Geneva" size:32.0] ]; 

하지만 변경하지 않는 NSOutlineView의 행의 행 높이 나는 성공적 실제 글꼴 크기를 변경할 수 있어요. 셀은 모두 이전 높이 (17pt)를 갖지만 텍스트는 32pt입니다. [myTable tile] 및 [myTable reloadData]를 시도했지만 행 높이를 다시 계산하지 않습니다.

나는 -noteHeightOfRowsWithIndexesChanged를 보았습니다. NSIndexSet을 로딩하고 noteHeightOfRowsWithIndexesChanged를 호출하여 행을 자동으로 조정하는 유일한 방법은 무엇입니까?

답변

2

글꼴 크기를 변경 한 후 개요보기에서 -setRowHeight :를 호출해야합니다. 예 : [outlineView setRowHeight : [font fontSize] +2.0].

행에 가장 적합한 높이를 얻기 위해

, 여기에 내가 내 응용 프로그램에서 할 수있는 작업은 다음과 같습니다

CGFloat KBDefaultLineHeightForFont (NSFont *font, BOOL sizeForTextField) 
{ 
    if (font == nil) 
     font = [NSFont userFontOfSize:0]; // Use default system font if font is nil. 

    NSLayoutManager *lm = [[NSLayoutManager alloc] init]; 

    if (sizeForTextField) 
     [lm setTypesetterBehavior:NSTypesetterBehavior_10_2_WithCompatibility]; 

    // On Mountain Lion and above, string drawing is done without using screen fonts, so we must do the same. 
    if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_7) 
     [lm setUsesScreenFonts:NO]; 

    CGFloat height = [lm defaultLineHeightForFont:font]; 
    [lm release]; 

    return height; 
} 

다음 :

CGFloat rowHeight = MAX(16.0, KBDefaultLineHeightForFont(ovFont, YES) + 3.0); 
[outlineView setRowHeight:rowHeight]; 
[[[[outlineView tableColumns] objectAtIndex:0] dataCell] setFont:ovFont]; 
+0

은 그래서를 위해 세포를 물어 자신을위한 방법이 없습니다 자신의 높이, 그리고 그것으로부터 행 높이를 만드시겠습니까? – SMGreenfield

+0

개요보기의 행 높이를 설정할 때까지 셀 높이가 변경되지 않기 때문에 직접 적용되지 않습니다. 당신이 할 수있는 일은 셀에서 -cellSizeForBounds :를 호출하여 rect 높이에 FLT_MAX를 전달하는 것입니다. 텍스트를 감쌀 수있는 셀의 행 높이가 가변적 인 외곽 뷰에서이 작업을 수행하지만 모든 행이 같은 높이가 될 경우 잔인한 작업 일 수 있습니다. 내가 닮은 경우를 위해 그것을하는 방법은 사용자 정의 함수를 호출하여 NSLayoutManager의 -defaultLineHeightForFont :를 사용하여 폰트의 최적 높이를 얻은 다음 두 개의 픽셀을 추가하고 -setRowHeight를 사용하여 설정합니다. – kayembi

+0

위의 대답을 사용 된 글꼴의 가장 좋은 행 높이를 계산하는 데 사용하는 코드로 업데이트했습니다. – kayembi

관련 문제