2016-02-18 19 views
0

我有一個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

回答

1

製作的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

0
[textField sizeToFit]; 

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

+0

我怎樣才能實現使用自動佈局? – RuLoViC