2015-01-26 6 views
0

NSTextfield 값을 변경할 때마다 tableView 전체 (뷰 기반)가 다시 그려집니다.자동 레이아웃을 사용하면 NSTableView가 너무 자주 다시 그려집니다.

아마도 intrinsicContentSize가 변경 될 수 있습니다.

나는이 시도,하지만 아무것도 고정 행 높이를 폭 사용자 정의로 설정되어

- (NSSize)intrinsicContentSize 
{ 
    return NSMakeSize(NSViewNoInstrinsicMetric,NSViewNoInstrinsicMetric); 
} 

의 TableView 크기 스타일을 변경하지 않았다.

TexField의 제약

V 있습니다 : | -20- [myTextField로 (14)]

H : | -20- [myTextField로는 (50)]

은 또한 안하려고

invalidateIntrinsicContentSize 
and 
invalidateIntrinsicContentSizeForCell:(NSCell *)cell 

에서 슈퍼를 호출하고 수동 NO

- (void) setObjectValue:(id)objectValue 
{ 
    [super setObjectValue:objectValue]; 
    [self setNeedsLayout:NO]; 
    [self setNeedsUpdateConstraints:NO];  
} 
에 setNeedsLayout을 설정하려고

그리고 여전히 tableView가 다시 그려져 있습니다 ...

이 문제를 방지하려면 어떻게해야합니까?

답변

0

"플래시 스크린 업데이트"가 활성화 된 Quartz Debug를 사용하여 다시 그리기중인 화면을 볼 수 있었고 전체 tableView가 깜박였습니다.

tableview와 textfield의 drawRect를 오버라이드 한 후, 더러운 rect와 Quartz가 깜빡 거리는 Rect가 같지 않음을 알았습니다. TableView 완전히 다시 그리기 있지 않습니다.