Iphone 如何将字符串放入矩形中?

Iphone 如何将字符串放入矩形中?,iphone,objective-c,cocoa-touch,uikit,Iphone,Objective C,Cocoa Touch,Uikit,我有一个字符串,想把它放进一个矩形中。矩形有一个指定的大小,比如宽度=150,高度=30。当字符串很短且只有一个字符时,它可以与矩形一样高。更具体地说:它可以有一个大的字体大小。但是,如果字符串的字符太多,并且会超出矩形的边界,则它必须变小。更具体地说:它的字体大小必须变小,这样就不会超过矩形的边界。有没有一种方法可以在不影响核心图形的情况下做到这一点 出于某些原因,UILabel的adjustsFontSizeToFitWidth属性无效。即使有足够的空间,文本仍然保持小 我已经设定好了 la

我有一个字符串,想把它放进一个矩形中。矩形有一个指定的大小,比如宽度=150,高度=30。当字符串很短且只有一个字符时,它可以与矩形一样高。更具体地说:它可以有一个大的字体大小。但是,如果字符串的字符太多,并且会超出矩形的边界,则它必须变小。更具体地说:它的字体大小必须变小,这样就不会超过矩形的边界。有没有一种方法可以在不影响核心图形的情况下做到这一点

出于某些原因,UILabel的adjustsFontSizeToFitWidth属性无效。即使有足够的空间,文本仍然保持小

我已经设定好了

label.adjustsFontSizeToFitWidth = YES;

但什么也没发生。我希望有另一种方法可以做到这一点。

UILabel有几个部分可以做到这一点,但首先您必须知道是否要截断字符串或减小字体大小以适合矩形

对于这两种情况,您都需要将
UILabel
numberOfLines
属性设置为
0
,允许标签根据需要进行包装。然后,您需要设置
UILabel
框架
,以匹配您想要匹配的矩形。从那里,您可以选择两条路径中的一条:

  • 截断:根据您要查找的截断行为,将
    lineBreakMode
    属性设置为
    UILineBreakModeClip
    UILineBreakModeHeadTruncation
    UILineBreakModeTailTruncation
    UILineBreakModeMiddleTruncation
  • 调整大小:根据您的偏好,将
    lineBreakMode
    设置为
    uilinebreakmodewrap
    或'UILineBreakModeCharacterWrap'。然后需要输入一个循环以确定正确的字体大小。从合理的字体大小(如12)开始,并:
    • 使用与该大小匹配的
      UIFont
      设置
      UILabel
      font
      属性
    • 调用
      -(void)sizeToFit
      以获取
      UILabel
    • 检查
      框架
      中的
      ui标签
      • 如果框架符合您需要的范围,那么就完成了
      • 如果框架仍然太大,请降低字体大小并重复循环
对于后一个选项,您需要确保不会将文本压缩到遗忘状态,因此您需要在字体大小上设置一个最小大小上限


您可以从和文档中获得更多信息。

UILabel有几个部分可以实现这一点,但首先您必须知道是否要截断字符串或减小字体大小以适合矩形

对于这两种情况,您都需要将
UILabel
numberOfLines
属性设置为
0
,允许标签根据需要进行包装。然后,您需要设置
UILabel
框架
,以匹配您想要匹配的矩形。从那里,您可以选择两条路径中的一条:

  • 截断:根据您要查找的截断行为,将
    lineBreakMode
    属性设置为
    UILineBreakModeClip
    UILineBreakModeHeadTruncation
    UILineBreakModeTailTruncation
    UILineBreakModeMiddleTruncation
  • 调整大小:根据您的偏好,将
    lineBreakMode
    设置为
    uilinebreakmodewrap
    或'UILineBreakModeCharacterWrap'。然后需要输入一个循环以确定正确的字体大小。从合理的字体大小(如12)开始,并:
    • 使用与该大小匹配的
      UIFont
      设置
      UILabel
      font
      属性
    • 调用
      -(void)sizeToFit
      以获取
      UILabel
    • 检查
      框架
      中的
      ui标签
      • 如果框架符合您需要的范围,那么就完成了
      • 如果框架仍然太大,请降低字体大小并重复循环
对于后一个选项,您需要确保不会将文本压缩到遗忘状态,因此您需要在字体大小上设置一个最小大小上限


您可以从和文档中获得更多信息。

调整字体大小调整字体宽度将字体大小向下调整,而不是向上调整


将UILabel上的字体设置为适当的大尺寸,UILabel将在必要时缩小字体以适应其边界。

adjustsFontSizeToFitWidth
将字体大小向下调整,而不是向上调整

将UILabel上的字体设置为适当的大尺寸,UILabel将在必要时缩小字体以适应其边界

  • 将标签字体大小设置为所需的正常大小
  • 将标签最小字体大小设置为 尽可能小的字体 (
    minimumFontSize
    property)
  • adjustsFontSizeToFitWidth
    设置为
  • 如果需要多行,请将另一张海报上的
    lineCount
    设置为0

  • 将标签字体大小设置为所需的正常大小
  • 将标签最小字体大小设置为 尽可能小的字体 (
    minimumFontSize
    property)
  • adjustsFontSizeToFitWidth
    设置为

  • 如果您需要多行,请按照另一张海报上的说明将
    lineCount
    设置为0。

    您所说的更小是什么意思?您的意思是截断字符串吗?字体较小/不截断。更新了更详细的问题你说的更小是什么意思?您的意思是截断字符串吗?字体较小/不截断。更详细地更新了问题