使用自动布局时,NSTableView会经常重绘

时间:2015-01-26 13:25:24

标签: macos autolayout nstableview nstablecellview

每次我更改NSTextfield的值时,都会重绘整个tableView(基于视图)。

这可能是由于可能会改变的intrinsicContentSize。

我试过了,但没有改变

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

TableView大小样式设置为自定义宽度固定行高度。

TexField的约束是

N:| -20- [myTextField将(14)]

H:| -20- [myTextField将(50)]

我也试图不打电话给超级

invalidateIntrinsicContentSize
and 
invalidateIntrinsicContentSizeForCell:(NSCell *)cell

并尝试手动将setNeedsLayout设置为NO

- (void) setObjectValue:(id)objectValue
{
    [super setObjectValue:objectValue];
    [self setNeedsLayout:NO];
    [self setNeedsUpdateConstraints:NO];    
}

tableView仍在重绘...

我该怎么做才能避免这种情况?

1 个答案:

答案 0 :(得分:0)

我正在使用Quartz Debug" flash screen updates"能够看到正在重绘的屏幕部分,整个tableView都在闪烁。

在覆盖tableview和textfield的drawRect之后,我看到脏的rect和Quartz闪烁的Rect不一样。 TableView不完全重绘。