无法动态更正uitextview高度

mru*_*gen 9 iphone xcode uitextview

我在获取uitextview的正确大小时遇到​​了问题.在我的应用程序中,我从webservice获取数据,并根据webservice中的数据设置uitextview的高度.但是,只要前35个字母中有空格(textview的框架)是(20,0,255,2000)).那么计算的hjeight总是比正确的高度少一行甚至uitext视图开始在新行中的空格后打印行(可能是单词很大就是为什么??).

所以我得到了错误的文本视图高度.

文本视图像这样somwethibng:

firstword spacesspacesspacesspaces spacesspacesspacesspaces spacesspacesspacesspaces spacesspacesspacesspaces spacesspacesspacesspaces

当我输入没有空格的文本时,它给出了正确的高度,假设数据是"tttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttиtt"Tttize,那么在上面的场景中,Cgsize将为我生成正确的结果.

在这里我不使用UILabel是因为我想要链接检测这就是为什么.如果有人有任何建议,我们非常欢迎.

关心Mrugen

Cha*_*zak 33

使用NSString的sizeWithFont方法实际上不适用于文本视图.它适用于UILabel,但文本视图似乎在文本周围有额外的填充.如果你使用那种方法,你的最终尺寸会有点短.

UITextView是UIScrollView的子类.设置textview的text属性后,其contentSize属性会自动更新以适合文本.因此,如果要设置文本视图的高度以适合其文本,请执行以下操作:

textView.text    = @"some text";
CGRect rect      = textView.frame;
rect.size.height = textView.contentSize.height;
textView.frame   = rect;
Run Code Online (Sandbox Code Playgroud)

这将设置textView的高度,使其包含文本.

  • @ charlie除此之外我们还需要设置textview setFitTOsize并且它为我做了.谢谢 (2认同)

sha*_*oga 9

您可以使用此功能测量文本的高度,并根据返回的高度设置框架.

   -(CGSize)sizeOfText:(NSString *)textToMesure widthOfTextView:(CGFloat)width withFont:(UIFont*)font
    {
        CGSize ts = [textToMesure sizeWithFont:font constrainedToSize:CGSizeMake(width-20.0, FLT_MAX) lineBreakMode:UILineBreakModeWordWrap];
        return ts; 
    }
Run Code Online (Sandbox Code Playgroud)

你这样使用它:

 CGSize size =   [self sizeOfText:@"the string you want to present" widthOfTextView:255 withFont:fontYouAreUsing];
Run Code Online (Sandbox Code Playgroud)

然后将其传递给文本视图:

   textView.frame = CGRectMake(20,0,255,size.height);
Run Code Online (Sandbox Code Playgroud)

祝好运

SHANI

  • 使用iOS 7时,textView的contentSize不起作用,并且您的解决方案需要很多,但xCode表示不推荐使用sizeWithFont.你现在有什么建议吗?我需要你的帮助.谢谢 (3认同)