代码之家  ›  专栏  ›  技术社区  ›  Roi Mulia

UILabel动态字体大小不断突破

  •  2
  • Roi Mulia  · 技术社区  · 9 年前

    我的CollectionViewCell只有UILabel(与单元格的边界相同)。 我正在获取fontNames数组作为CollectionView DataSource:

     func printFonts() {
            let fontFamilyNames = UIFont.familyNames()
            for familyName in fontFamilyNames {
                let names = UIFont.fontNamesForFamilyName(familyName as! String)
                fontNames.append(familyName as! String)
    
            }
        }
    

    我正在尝试在中显示此字体名称 行,它在某些情况下有效,但在一些情况下无效,我不知道为什么。 这就是我“调整”字体的方式 cellForItemAtIndexPath :

       cell.lbl_font.adjustsFontSizeToFitWidth = true
       cell.lbl_font.numberOfLines = 1
       cell.lbl_font.minimumScaleFactor = 0.1
       cell.lbl_font.baselineAdjustment = .AlignCenters
       cell.lbl_font.textAlignment  = NSTextAlignment.Center
    

    我也通过故事板修改了这个属性:

    desc

    结果:

    desc

    更新:

    如何将文本应用于单元格。哪里 lbl_font 是细胞内的标签, 在…内 项目索引路径单元格

      let cell : textCell = collectionView.dequeueReusableCellWithReuseIdentifier("text_cell", forIndexPath: indexPath) as! textCell
           cell.lbl_font.text = fontNames[indexPath.row]
          cell.lbl_font.font = UIFont(name:fontNames[indexPath.row], size:    cell.lbl_font.font.pointSize)
          cell.lbl_font.adjustsFontSizeToFitWidth = true
          cell.lbl_font.numberOfLines = 1
          cell.lbl_font.minimumScaleFactor = 0.1
          cell.lbl_font.baselineAdjustment = .AlignCenters
          cell.lbl_font.textAlignment  = NSTextAlignment.Center
          return cell
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Ashish Kakkad Roman Scher    9 年前

    有最小字体收缩属性可用。它将字体大小缩小为与当前点大小的最小比率。如果内容变得比字体的比例更大,那么它将挑衅地在结尾显示截断点(…)。

    例如:

    在这里,我将设置最小字体比例为0.4的属性。

    enter image description here

    在这里,您可以看到应用了相同属性的不同文本。

    enter image description here

    第一和第二个标签将调整字体大小,因为内容较少,并根据最小字体比例进行调整。但是在第三个步骤中,最小字体比例和标签的内容不匹配。

    对于这个问题,你应该知道马赫数内容应该如何显示在标签上,或者对于面糊,你可以使用多行标签。

    希望你能从答案中得到帮助。