gpt4 book ai didi

objective-c - 不可编辑的 NSTextfield,以使其在字符串太长时自动调整大小,例如英语单词到法语

转载 作者:行者123 更新时间:2023-12-03 17:48:38 27 4
gpt4 key购买 nike

正如我在文本字段中发布的问题一样,当我用英语打开我的应用程序时,它运行良好,但是当切换到法语时,我们知道法语单词有时很长,在这种情况下,文本字段中显示的单词将被切断。

我在堆栈溢出时尝试了一些自定义文本字段的方法,但它对于可编辑文本字段效果很好,当我将其设置为不可编辑时,行为将被连接。

就像当单词太长时,它只会使文本字段变长,这意味着只增加宽度,而不是高度。我期望的是在单词太长时保持宽度固定,同时更改高度。

intrinsicSize = [super intrinsicContentSize];
NSTextView *textView = (NSTextView *)fieldEditor;
NSRect usedRect = [textView.textContainer.layoutManager usedRectForTextContainer:textView.textContainer];

我使用的两种主要功能,当它可编辑时,一切都很顺利,高度会改变,而宽度会固定,但当它不可编辑时,只有宽度会改变。

有什么建议吗?

最佳答案

在您的 NSTextField 子类中重写以下方法。还要确保 NSTextField 设置为在 IB 中换行。为其添加约束。

 -(NSSize)intrinsicContentSize
{
// If wrap is not enabled return the original size
if ( ![self.cell wraps] ) {
return [super intrinsicContentSize];

NSRect frame = [self frame];
CGFloat width = frame.size.width;
// This will allow to grow it in height and not width
frame.size.height = CGFLOAT_MAX;
CGFloat height = [self.cell cellSizeForBounds: frame].height;
// return the calculated height
return NSMakeSize(width, height);
}

// Listen to text change notification and invalidate the default size
- (void)textDidChange:(NSNotification *)notification
{
[super textDidChange:notification];
[self invalidateIntrinsicContentSize];
}

关于objective-c - 不可编辑的 NSTextfield,以使其在字符串太长时自动调整大小,例如英语单词到法语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110116/

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