使用adjustsFontSizeToFitWidth制作不同大小的UILabel具有相同的字体大小

时间:2017-01-17 02:17:57

标签: ios swift uilabel

我有许多UILabel,所有UIL用户都将adjustsFontSizeToFitWidth设置为true。它们都是不同的大小,它们内部文本的长度会有所不同,所以每个标签中文本的大小基本上都是任意的。

我的目标是让所有文本的文本大小相同,以便在每个标签确定文本的大小必须适合之后,它们都会将文本的大小调整为最小字体大小UILabels。这是最大的字体大小,足以容纳每个标签的文本。

我还考虑为每个标签手动计算允许其文本适合的最大字体大小,然后将每个标签的字体大小设置为这些字体大小中最小的字体大小,但我没有&#39 ; t知道如何进行这种计算。

1 个答案:

答案 0 :(得分:0)

您必须遍历标签才能找到所需的最小尺寸。检查此代码

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 10))
    let textArray = ["asdasdas","asdsd","asdas"]
    let size : CGFloat = 14
    var minimumSize = size
    for string in textArray{
        var i : CGFloat = 0
        while size-i>0 {
            let font = UIFont.systemFont(ofSize: size-i)
            let preferredSize = label.preferredLabelSize(maximumFrameBounds: view.frame, font: font, text: string)
            if label.frame.size.width>=preferredSize.width{
                minimumSize = min(size-i, minimumSize)
                print(minimumSize)
                break
            }
            i += 1
        }
        print(minimumSize)
    }

我只是在同一标签上迭代一个字符串数组,以找到需要显示的字体的最小大小。不确定这是否会完美,但这会指向正确的方向。您需要使用文本迭代标签以找到最小字体大小,而不是迭代字符串数组。您可以尝试修改标签的宽度或数组中的字符串,以查看它是否按您的意愿工作。另外,我建议您使用自动布局,如果可以,让操作系统处理大小而不是手动计算字体大小。