如何使NSTextField适合NSMutableAttributedString包含

问题描述:

我有一个NSTextField我添加NSMutableAttributedString。我想将该字符串的大小设置为大数字,但是当我这样做时,文本会被截断。如何让NSTextField变得更大?如何使NSTextField适合NSMutableAttributedString包含

这是我有:

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]; 

有什么建议? 在此先感谢

+0

有U使用自动布局? – TechBee

+0

我正在使用自动布局,是 – RuLoViC

制作的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]; 
} 

在属性检查器设置故事板类的NSTextField里面你customNSTextField类和布局的变化,从滚动到包装。 您必须在其超级视图中将textField的约束添加到故事板中。直接

之后,你还可以设置字体大小:

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

太棒了!这很好用 非常感谢! – RuLoViC

[textField sizeToFit]; 

但使用autolayout,通常是一个更好的主意。

+0

我怎样才能实现使用自动布局? – RuLoViC