gpt4 book ai didi

objective-c - 如何使 NSTextField 适合包含的 NSMutableAttributedString

转载 作者:行者123 更新时间:2023-12-03 17:01:53 26 4
gpt4 key购买 nike

我有一个 NSTextField,我在其中添加 NSMutableAttributedString。我想将该字符串的大小设置为大数字,但是当我这样做时,文本会被截断。如何告诉 NSTextField 变大?

这就是我所拥有的:

NSTextField* textField = [[NSTextField alloc] init];
NSMutableAttributedString* text = [[NSMutableAttributedString alloc]
initWithString:@"0"];
NSRange titleRange = NSMakeRange(0, [text length]);
[text addAttribute:NSFontAttributeName
value:[NSFont boldSystemFontOfSize:25]
range:titleRange];
[textField setAttributedStringValue:text];

有什么建议吗?提前致谢

最佳答案

创建 NSTextField 的子类

在实现中覆盖intrinsicContentSize

-(NSSize)intrinsicContentSize
{
if ( ![self.cell wraps] ) {
return [super intrinsicContentSize];
}

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);
}

// Than invalidate the layout when text changes
- (void)textDidChange:(NSNotification *)notification
{
[super textDidChange:notification];
[self invalidateIntrinsicContentSize];
}

在 Storyboard内的属性检查器中,将 NSTextField 类设置为您的自定义 NSTextField 类,并将布局更改为滚动式换行。您必须将文本字段的约束添加到其 super View ,这在 Storyboard中更容易。

之后您还可以直接设置字体大小:

[_textField setFont:[NSFont systemFontOfSize:25]];

关于objective-c - 如何使 NSTextField 适合包含的 NSMutableAttributedString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35482368/

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