我正在开发AS3和AIR for iOS和Android的应用程序,它有很多标签,并且想知道如果标签文本长度太长,是否有人知道减少字体大小的最佳方法。
我基本上希望标签中的文字始终适合,无论长度如何。
由于
答案 0 :(得分: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
循环增加每次传递的字体大小,直到最大宽度达到界限。