如何使 NSTextField 适合包含的 NSMutableAttributedString
how to make NSTextField to fit NSMutableAttributedString contained
我有一个 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];
有什么建议吗?
提前致谢
[textField sizeToFit];
但使用自动版式通常是更好的主意。
制作 NSTextField
的子class
在实现中覆盖 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];
}
在情节提要中的属性检查器中,将 NSTextField class 设置为您的自定义 NSTextField class 并将布局更改为从卷轴换行。
您必须将 textField 的约束添加到它的超级视图中,这在情节提要中更容易。
之后也可以直接设置字体大小:
[_textField setFont:[NSFont systemFontOfSize:25]];
我有一个 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];
有什么建议吗? 提前致谢
[textField sizeToFit];
但使用自动版式通常是更好的主意。
制作 NSTextField
的子class在实现中覆盖 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];
}
在情节提要中的属性检查器中,将 NSTextField class 设置为您的自定义 NSTextField class 并将布局更改为从卷轴换行。 您必须将 textField 的约束添加到它的超级视图中,这在情节提要中更容易。
之后也可以直接设置字体大小:
[_textField setFont:[NSFont systemFontOfSize:25]];