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

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

甚至myTextView.contentSize.width对我也不起作用。

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

有什么建议么??

最佳答案

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);


认为这将为您工作。尝试一下。希望这可以帮助。

08-06 07:42