내 앱의 일부 프리젠 테이션에서 가독성을 높이기 위해 NSTableView에서 글꼴 크기를 늘려야합니다 (보기 기반 모드). 글꼴을 변경NSTableView : 셀의 텍스트 크기를 올바르게 조정하는 방법
는 - (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
내에서 잘 작동 :
NSTableCellView *cellView = [tableView makeViewWithIdentifier:identifier owner:self];
[cellView.textField setFont:self.tableFont];
cellView.textField.stringValue = rowData[row];
[cellView.textField setNeedsDisplay:YES];
가 나는 또한 - (CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row
로 rowHeight에 업데이트,이 또한 작동합니다
- (CGFloat) tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
if (self.tableFont) {
NSLog(@"Setting row height to %.1f", [self.tableFont pointSize]+8);
return [self.tableFont pointSize] + 8;
}
return [NSFont systemFontSize] + 8;
}
는 (방법 아마 올바른을 결정하는 더 우아한 방법이 있습니다 높이)
내 문제는 다음과 같습니다. 글꼴이 변경되는 것을 볼 수 있습니다. 또한 rowHeight가 변경되는 것을 볼 수 있습니다 (대체 행 채색을 사용할 때 멋지게 표시됨). 그러나 셀 내의 텍스트는 오래된 높이 (아마도 17 픽셀)로 잘려서 보이므로 글꼴 크기가 커지면 필기의 맨 위와 공백을 확인한 다음 다시 다음 행의 맨 위 부분 만 볼 수 있습니다 . 그것의 오래된 높이 몇 가지보기를 클립 NSTableViewCell처럼 보이는 나를 위해
... 난 이미 다른 값으로 프레임과 경계를 설정 연주하지만,이 아무것도 변경하지 않은 :
NSRect rect = [cellView.textField frame];
rect.origin.y = 1;
rect.size.height = [self.tableFont pointSize] + 6;
[[cellView.textField cell] setFrame:rect];
[cellView.textField setFrame:rect];
[cellView.textField setBounds:rect];
[cellView.textField setNeedsDisplay:YES];
[cellView setFrame:rect];
[cellView setBounds:rect];
[cellView setNeedsDisplay:YES];
I을 가지 여기 분실하고 ...
덕분에 내가 뭔가를 간단 말이냐 생각하지만, 내가보기 위하여 어디 아무 생각이 없다, 월
답변 해 주셔서 감사합니다. Wil! 모든 제약 조건을 확인하고 NSTextField를 망칠 인터페이스 작성기를 보지 못했습니다. 두 가지 제약 조건 (Constraint :)이 생성되었지만이를 제거해도 아무런 영향이 없었습니다. –
janu
텍스트 필드의 프레임 크기가 인터페이스 작성기의 NSTableCellView.textField 하위 클래스 요소에 대해 정의한 것으로 고정되어있는 것처럼 보입니다. 심지어 viewWillDraw에서 재정의 할 수도 없습니다. 해결 방법으로, 이제 NSTableCellView.textField 프레임을위한 거대한 설정을 사용합니다 ... 지금 당장 작동합니다. – janu
그래서 내 진짜 질문은 : 프레임 크기가 프로그램 실행 중에 IB에 입력 한 프레임 크기로 고정 된 이유는 무엇입니까? 테이블 뷰의 행 높이는 '자동', '고정되지 않음'으로 설정됩니다. – janu