记录boundingRectWithSize计算文本

boundingRectWithSize:options:attributes:context:

参数:

  • size:表示计算显示文本的最大宽高(就是限制的最大高度、宽度)
  • options:表示计算的类型NSStringDrawingOptions
  • attribute:表示富文本的属性NSAttributedString.h比如字体、文字样式NSFontAttributeName、NSParagraphStyleAttributeName
  • context:上下文,包括一些信息,例如如何调整字间距以及缩放。该参数一般可为 nil

返回值:
rect:所计算字符串frame


需要注意:

  1. 多行文本 options 的值至少需要设置: NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading

  2. 如果你计算的字符串中包含\n\r 这样的字符,计算时会把它当成字符来计算。但是在显示的时候就是\n是转义字符,那么显示和计算的高度就不一样了。可以采用:计算的高度 = boundingRectWithSize计算出来的高度 + \n\r转义字符出现的个数 * 单行文本的高度

  3. 带有行间距的富文本计算,计算的文本带有中文且只有一行时会导致多出一行行间距会影响控件或者父控件的高度,可以通过计算文本是否是多行,多行情况再在attributes中设置lineSpace

  4. height正好是排版后的高度大小,CGFloat类型,在我们设置控件高度高度时,系统可能存在四舍五入导致一点误差进而导致文本显示不完整留出空白。我们可以在计算出高度后加上1像素

  5. size参数需要注意,如果是输入框UITextView等控件展示文本,控件本身显示和控件之间存在padding,这种情况会在某些巧合情况下影响到一整行的高度,因为计算高度时用到的宽度和显示时的实际宽度不同。总之一点:size参数为我们文本的宽高,并不一定是控件的宽高,像UITextView需要减去textContainer的padding

你可能感兴趣的:(记录boundingRectWithSize计算文本)