1

我正在为 iOS 和 Android 开发一个带有大量标签的 AS3 和 AIR 应用程序,我想知道如果标签文本长度太长,是否有人知道减小字体大小的最佳方法。

我基本上希望标签中的文本始终适合,无论长度如何。

谢谢

4

1 回答 1

0

这可以通过多种方式实现。

您可以调用fitLabel()传递文本字段和边界框:

fitLabel(textField, new Rectangle(0, 0, stage.stageWidth, stage.stageHeight));

一种方法是将文本字段缩放到边界:

protected function fitLabel(textField:TextField, bounds:Rectangle):void
{
    var metrics:TextLineMetrics = textField.getLineMetrics(0);
    var ratio:Number = Math.min(bounds.width / metrics.width,
                                bounds.height / metrics.height);

    textField.scaleX = ratio;
    textField.scaleY = ratio;
}

另一种方法是实现一种算法,根据 dpi 调整字体大小:

protected var dpi:uint = 72;

protected function fitLabel(textField:TextField, bounds:Rectangle):void
{
    var metrics:TextLineMetrics = textField.getLineMetrics(0);

    var format:TextFormat = textField.getTextFormat();
    format.size = (stage.stageWidth / dpi) * 13;

    textField.setTextFormat(format);
    textField.width = bounds.width;
    textField.height = bounds.height;
}

另一种方法是遍历一个while循环,每次通过增加字体大小,直到最大宽度达到边界。

示例 SWF

你好世界

于 2013-05-28T05:30:51.507 回答