gpt4 book ai didi

objective-c - NSTableCellViews 的自动布局系统是否不同?

转载 作者:行者123 更新时间:2023-12-03 17:23:29 24 4
gpt4 key购买 nike

我创建了 NStextField 的子类,它可以扩展和收缩以适应文本中的更改。这是代码:

- (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,控件会正确更改其大小。但是,如果我从控件中键入或删除文本,则在需要新行时它不会调整大小。我真的无法弄清楚为什么控件在这两种情况下表现不同?

最佳答案

我相信您需要实现

- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row

在你的NSTableViewDelegate中.

关于objective-c - NSTableCellViews 的自动布局系统是否不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com