1

我正在制作一个需要在屏幕上创建 UITextView 的应用程序。TextView 的高度和宽度应该随着用户输入而继续增加,即 TextView 的高度和宽度应该根据其内容而改变。

但是我已经能够通过myTextView.ContentSize.height控制 TextView 的高度。但是我找不到根据其内容控制 TextView 宽度的方法。

甚至myTextView.contentSize.width也不适合我。

我正在UITextView 的textViewDidchange委托方法中进行所有帧计算。

有什么建议么??

4

1 回答 1

1

textViewDidChange,

CGSize constraintSize; 
CGSize labelSize; 

constraintSize = CGSizeMake(myTextView.frame.size.width, 480); 

NSString    *text   =   myTextView.text;
text                =   [text stringByTrimmingCharactersInSet: [NSCharacterSet newlineCharacterSet]];
text                =   [text stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

if([text stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding])
{
    text            =   [text stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
}

// Note that in the below line you must use the font as exact as you use for textview

labelSize           =   [text sizeWithFont:[UIFont systemFontOfSize: 16] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

在中labelSize您可以找到文本视图的预期大小。您可以将框架设置myTextView

myTextView.frame    =   CGRectMake(myTextView.frame.origin.x,myTextView.frame.origin.y,labelSize.width,labelSize.height);

认为这对你有用。试试看。希望这可以帮助。

于 2012-08-07T10:34:02.400 回答