Ios 仅当UITextView的内容视图大于其名称时才显示图像

Ios 仅当UITextView的内容视图大于其名称时才显示图像,ios,uitextview,scrollview,Ios,Uitextview,Scrollview,我正在做一个项目,我想显示一个图像,如果文本不适合UITextView框架 我正在使用以下代码 if (self.textView.contentSize.height >= self.TextView.bounds.size.height) { self.imageView.hidden = NO; } 我也在使用自动布局。是否会引起这些问题 还有一件事是,当我打印NSLog时,contentSize.height的值并没有随着UITextView显示的文本而改变。您可以使

我正在做一个项目,我想显示一个图像,如果文本不适合UITextView框架

我正在使用以下代码

  if (self.textView.contentSize.height >= self.TextView.bounds.size.height)
{
    self.imageView.hidden = NO;
}
我也在使用自动布局。是否会引起这些问题


还有一件事是,当我打印NSLog时,contentSize.height的值并没有随着UITextView显示的文本而改变。

您可以使用此方法根据使用的字体大小检查多行文本的高度

+  (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
    CGSize maximumSize = CGSizeMake(width, 9999);
    CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"Helvetica" size:24]
                         constrainedToSize:maximumSize 
                             lineBreakMode:UILineBreakModeWordWrap];
    return size;
}
你需要知道

  • 文本字段宽度
  • 字体
  • 字号
损失7

CGRect textRect=[文本边界矩形大小:
选项:NSStringDrawingUserLineFragmentOrigin
属性:@{NSFontAttributeName:[UIFont stuff here]}
上下文:无];
CGSize size=textRect.size;

是的,如果您将文本分配给textView,并在viewControllers viewDidLoad的下一条指令中检查其大小,则它将不起作用。它只会给出您设置的contentSize

检查ViewController的ViewDid中出现的内容大小,它就会工作。
这对我很有效。

希望这能有所帮助,

[textString sizeWithFont:constrainedToSize:lineBreakMode:];在iOS 7.0中已被弃用感谢您快速响应
CGRect textRect = [text boundingRectWithSize:<text Feild Size>
                                 options:NSStringDrawingUsesLineFragmentOrigin
                              attributes:@{NSFontAttributeName:[UIFont stuff here]}
                                 context:nil];

CGSize size = textRect.size;