2012-08-22 67 views
0

我想必須使用一個NSTextView或其中的NSTextField顯示文本,我通過textField.stringValue = [dictionary objectForKey:@"info"];NSTextView或NSTextField是否自動調整邊界/幀?

的問題是我需要的邊界文本區域垂直重新大小/幀來顯示所有的文字添加。文字從幾個字(1行)到一兩個段落不等。

當我嘗試[textField sizeToFit];

它重新大小整個事情到一個單一的線,是荒謬太長(和熄滅視圖)。我需要它根據當前窗口寬度自動重新調整其寬度,並根據重新調整其高度來繼續顯示所有文本。

任何想法嘗試或方向?這是OSX沒有iOS的。

(此TextField或TextView的是要在查看基於 - NSTableView的所以我最終試圖讓我的表來動態調整大小的行高基於該文本框。)

回答

0

我需要在我目前的項目上做類似的事情。訣竅是在NSString上使用sizeWithFont方法。這將返回CGSize,然後您可以使用它來構建正確大小的框架以適合您的文本。

-(void) setCaption: (NSString*) text size:(CGSize) maxSize 
{ 
    [self.label setText:text]; 
    UIFont* font=[UIFont systemFontOfSize: [UIFont systemFontSize]] 
    [[self label] setFont:font]; 

    CGSize size=[text sizeWithFont:font constrainedToSize:maxSize]; 
    label.frame = CGRectMake(0, 0, size.width, size.height); 
} 

如果您無權訪問該視圖,那麼您可以將其滾動到類助手方法中。

+0

這似乎可以做到這一點。我會稍微檢查一下! –

+0

你碰巧知道什麼相當於'CGSize size = [text sizeWithFont:font constrainedToSize:maxSize];'OSX會是什麼? 'CGSize size = [text sizeWithAttributes:[NSDictionary dictionaryWithObjetc:font forKey:NSFonrAttributeName]];'? –

+0

是的,我相信sizeWithAttributes是你想要的。 – Brian