1
我已经创建了一个NStextField
的子类,它扩大和缩小以适应文本中的变化。这里是代码:对于NSTableCellViews,自动布局系统是否有所不同?
- (NSSize)sizeToFitContent
{
NSRect frame = [self frame];
CGFloat width = frame.size.width;
frame.size.height = CGFLOAT_MAX;
CGFloat height = [self.cell cellSizeForBounds: frame].height;
return NSMakeSize(width, height);
}
- (void)textDidChange:(NSNotification *)aNotification
{
[super textDidChange:aNotification];
[(NSCell *)self.cell title];
NSSize newSize = [self sizeToFitContent];
if (newSize.height != self.frame.size.height) {
[self invalidateIntrinsicContentSize];
}
}
- (NSSize)intrinsicContentSize
{
if (![self.cell wraps]) {
return [super intrinsicContentSize];
}
return [self sizeToFitContent];
}
我已经验证了控件做了我想要它在几个项目中做的事情。最近我尝试将控件放在NSTableCellView
内,并停止工作。如果我以编程方式设置控件的stringValue,控件将正确更改其大小。但是,如果我从控件中键入或删除文本,则在需要换行时不会调整其大小。 我不明白为什么控制在这两种情况下表现不同?
毫米,我已经在我的项目中实现了,但它不适用于编辑。实际上,我实现了textDidChange:(NSNotification *)aNotification,它在您输入单元格时获取通知,并将noteHeightOfRowsWithIndexesChanged:发送到我的表视图,但不调整欢乐结果的大小。在表视图上调用setNeedsDisplay也不会强制重绘。不知道它可能与nstextfieldcell ... –