根据内容大小属性设置 UIText 视图的宽度

Posted

技术标签:

【中文标题】根据内容大小属性设置 UIText 视图的宽度【英文标题】:set the width of a UIText view based on the content size property 【发布时间】:2012-09-12 03:30:31 【问题描述】:

TextView.contentSize.width 无法设置 UITextView 的 .frame.size.width。

[TextView setFrame:CGRectMake(TextView.frame.origin.x, TextView.frame.origin.y, TextView.contentSize.width, TextView.contentSize.height)];  

将 UITextView 的框架高度设置为 contentSize.height 属性可以使视图的框架缩放到适合当前内容垂直大小的大小。由于某种原因,视图框架的宽度不会以相同的方式响应。无论输入多少文本,它都保持相同的大小。

当我动态记录 UITextView 的内容大小时,当我在视图中输入文本时,高度属性会发生变化(在每个换行符处),而宽度不会发生变化。让我想知道 width 属性在做什么,它是做什么用的。

【问题讨论】:

【参考方案1】:

试试这个方法..

UIFont *font = [UIFont fontWithName:@"Enriqueta" size:15];
NSString *text = @"Your text";
CGSize frameSize = [text sizeWithFont:font];
CGRect originalFrame = textViewA1.frame;
textViewA1.frame = CGRectMake(CGRectGetMinX(originalFrame), CGRectGetMinY(originalFrame), frameSize.width, frameSize.height);

【讨论】:

谢谢。工作,与上面相同,直到我换行,其中我的 UIText 视图的 with 继续扩大。例如,如果有两行每行 5 个字符,则 UITextview 宽度将是单行 5 个字符的两倍。我正在寻找一种方法来计算最长的线并将其用作宽度的测量值。【参考方案2】:

根据 UITextView 的宽度,它应该是这样的:

UIFont *myFont = [UIFont boldSystemFontOfSize:15.0]; //your font specification here
NSString *strText = yourTextView.text;
CGSize strsize = [strText sizeWithFont:myFont
                          forWidth:yourTextView.frame.size.width 
                    lineBreakMode:UILineBreakModeWordWrap]; //get string size
yourTextView.frame = CGRectMake(yourTextView.frame.origin.x,yourTextView.frame.origin.y,strsize.width,strsize.height+10); //change accordingly

【讨论】:

谢谢。工作,直到我换行,其中我的 UIText 视图的 with 继续扩大。例如,如果有两行每行 5 个字符,则 UITextview 宽度将是单行 5 个字符的两倍。我正在寻找一种方法来计算最长的线并将其用作宽度的测量值。

以上是关于根据内容大小属性设置 UIText 视图的宽度的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView 内容宽度到自定义大小

iOS 根据给定宽度自适应文字大小

TextView系列:给定宽度,根据内容长度,自动改变字体大小

如何将视图(例如标签)的高度/宽度设置为其内容的大小?

设置usercontrol大小根据其中的控件

在winform中怎么样设置文本域根据文本域中显示的内容自动改变大小