NSTextView或NSTextField会自动调整边界/帧的大小吗?

时间:2012-08-22 17:29:38

标签: objective-c macos nstableview nstextfield nstextview

我正在尝试使用NSTextView或NSTextField来显示我通过textField.stringValue = [dictionary objectForKey:@"info"];添加的文字

问题是我需要文本区域的边界/框架垂直重新调整大小以显示所有文本。文本从几个单词(1行)到一个或两个段落不等。

当我尝试[textField sizeToFit];

它将整个事物重新调整为一条线,这条线太荒谬(并且不在视线范围内)。我需要它根据当前窗口宽度自动重新调整其宽度,并根据重新调整其高度来显示所有文本。

有关尝试或指导的任何想法?这适用于OSX而不是iOS。

(此TextField或TextView将进入基于视图 - NSTableView。所以我最终试图让我的表根据该文本框动态调整行高。 )

1 个答案:

答案 0 :(得分:0)

我需要在我当前的项目中做类似的事情。诀窍是在sizeWithFont上使用NSString方法。这将返回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);
}

如果您无权访问该视图,则可以将其转换为类助手方法。