无法控制 UITextView 的宽度

Posted

技术标签:

【中文标题】无法控制 UITextView 的宽度【英文标题】:Unable to control the width of UITextView 【发布时间】:2012-08-07 10:10:45 【问题描述】:

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

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

即使 myTextView.contentSize.width 对我也不起作用。

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

有什么建议吗??

【问题讨论】:

内容大小是否小于UITextView的大小? 【参考方案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);

认为这对你有用。尝试一下。希望这会有所帮助。

【讨论】:

我试过了,但我的 textview 只增加了高度。它的宽度没有增加。

以上是关于无法控制 UITextView 的宽度的主要内容,如果未能解决你的问题,请参考以下文章

无法控制 UITextView 的宽度

从 UIText 字段的用户输入更改 UIView 框架的高度和宽度

UITextView textContainer排除路径在视图控制器的中间时不起作用

在多个 UITextView 中显示长文本

如何在 UITextView 中实现滚动功能?

UIPopOver、UITextView 和自动调整大小