【问题标题】:Different texts in UILabel remain the same font size in UICollectionView CellsUILabel 中的不同文本在 UICollectionView 单元格中保持相同的字体大小
【发布时间】:2019-01-17 08:56:38
【问题描述】:

例如,

  1. 我有 4 个来自 UICollectionView 的 itemsInSection,根据设备大小,它们具有相同的高度和宽度。
  2. 对于单元格内部的 UILabel,使其宽度和高度相等,乘数为单元格的 1:3。当屏幕尺寸改变时,我希望 UILabel 尺寸增大或缩小。
  3. UILabel 中每个单元格的文本都不同,例如“Pen”、“Documents”、“Lee”和“Beats”
  4. 我设置 fontSize = 22pt,minimumScaleFactor 为 0.5,adjustsFontSizeToFitWidth 为 true
  5. 但问题是“文档”将是最小的字体大小,所有其他文本字体看起来都比它大得多。

问题:如何使所有 UILabel 文本大小与最长文本相同,同时字体大小应根据屏幕大小缩小或增大?

例如。 iPhone 8 Plus 的字体大小应该比 iPhone SE 的字体大,因为我们在 iPhone 8 Plus 上有更多的空间。

【问题讨论】:

    标签: ios autolayout uilabel uicollectionviewcell


    【解决方案1】:

    您可以使用以下方法检查哪个标签的字符数最多:

    label.text.count
    

    一旦你知道哪个是最长的,你就可以使用一个简单的扩展,比如:

    extension UILabel{
        func anchorFontSize(toLabel: UILabel) {            
            let text: NSMutableAttributedString = NSMutableAttributedString(attributedString: toLabel.attributedText!)
            text.setAttributes([NSAttributedStringKey.font: toLabel.font], range: NSMakeRange(0, text.length))
            let context: NSStringDrawingContext = NSStringDrawingContext()
            context.minimumScaleFactor = toLabel.minimumScaleFactor
            text.boundingRect(with: toLabel.frame.size, options: NSStringDrawingOptions.usesLineFragmentOrigin, context: context)
            let adjustedFontSize: CGFloat = toLabel.font.pointSize * context.actualScaleFactor
            let font = self.font.fontName
            self.font = UIFont(name: font, size: adjustedFontSize)            
        }
    }
    

    将其他标签的字体大小锚定为最长标签的字体大小。

    【讨论】:

    • 感谢您的快速回复。这是我的不好没有描述清楚。根据您的回答,它总是会返回最长单词的最小字体。在我的示例中,当屏幕更大(iPhone 8 plus)时,字体将始终为 17pt。请再次查看我更新的描述。谢谢
    • 不。在这种情况下,变化将是动态的,取决于最长单词的字体大小和最小比例因子。例如:如果在 iphone SE 中,适合标签的最小缩放尺寸是 15 pt,所有这些都将最终为 15 pt。如果您现在有更多空间并且最小缩放尺寸为 17 pt,那么它们最终都将是 17 pt。此扩展不会为您提供最小尺寸,而是为您提供适合的最小缩放尺寸。
    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2017-10-26
    • 1970-01-01
    • 2017-05-31
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多