我正在为 iOS 和 Android 开发一个带有大量标签的 AS3 和 AIR 应用程序,我想知道如果标签文本长度太长,是否有人知道减小字体大小的最佳方法。
我基本上希望标签中的文本始终适合,无论长度如何。
谢谢
我正在为 iOS 和 Android 开发一个带有大量标签的 AS3 和 AIR 应用程序,我想知道如果标签文本长度太长,是否有人知道减小字体大小的最佳方法。
我基本上希望标签中的文本始终适合,无论长度如何。
谢谢
这可以通过多种方式实现。
您可以调用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
循环,每次通过增加字体大小,直到最大宽度达到边界。