0

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

这可能是由于 intrinsicContentSize 可能会发生变化。

我试过这个,但没有任何改变

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

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

TexField 的约束是

V:|-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还在重绘...

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

4

1 回答 1

0

我正在使用启用“闪存屏幕更新”的 Quartz Debug 来查看正在重绘的屏幕部分,并且整个 tableView 都在闪烁。

覆盖tableview和textfield的drawRect后,看到dirty rect和Quartz闪烁的Rect不一样。TableView 没有完全重绘。

于 2015-01-26T15:15:11.390 回答