根据字符串的长度更新NSTextField的大小

时间:2015-03-31 07:59:50

标签: macos cocoa nstextfield

我正在尝试更新NSTextField的高度w.r.t字符串的长度,但如果字符串很亮,则最后一部分会被切断。这是我的代码。

 self.solutionTextView.frame = CGRectMake(self.solutionTextView.frame.origin.x, self.solutionTextView.frame.origin.y, self.solutionTextView.frame.size.width + 25 ,self.solutionTextView.frame.size.height + 25);
//self.solutionTextView.sizeToFit()

我做错了什么?

1 个答案:

答案 0 :(得分:3)

如果允许NSTextField包装字符串,则以下步骤是确定字段所需高度的标准(或通常的?或更多可能的?)方法。假设字段的宽度给出:

NSRect frame = [textField frame];

现在把它做得很高:

NSRect constraintBounds = frame;
constraintBounds.size.height =  10000.0;
[textField setFrame: constraintBounds];

并设置字符串:

[textField  setStringValue:theString];

现在询问自然尺寸:

 NSSize naturalSize =
        [[textField cell] cellSizeForBounds:constraintBounds];

你完成了:

 frame.size = naturalSize;
 [textField setFrame:frame];