UILabel动态字体大小不断破坏

时间:2015-08-19 22:07:43

标签: ios swift xcode uilabel uifont

我的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)

        }
    }

我试图在UILabel内的一个行显示这些字体名称,它适用于某些情况,但有些情况下没有,我不明白为什么。 这就是我调整" 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

我也通过storyBoard修改了这个属性:

desc

结果:

desc

更新:

如何将文本应用于单元格。其中lbl_font是单元格内的标签, 在cellForItemAtIndexPath

  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 个答案:

答案 0 :(得分:2)

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

例如:

这里我设置的属性最小字体为0.4。

enter image description here

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

enter image description here

在第一个和第二个标签中将调整字体大小,因为内容较少,并根据最小字体比例进行调整。但是在第3个中,最小字体比率和标签的内容不匹配,那么它将显示带截断的点(...)。

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

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