如何查找具有特定字体和字体大小的文本的位长

时间:2019-02-02 04:10:52

标签: text size nativescript

我正在开发NativeScript JavaScript代码来为地图创建动态文本标记。我的代码可以为特定的字符串创建标记。我的下一步是获取任何给定的字符串,确定其高度和宽度(以位为单位),并创建大小适合于包含文本的标记。

我的问题是找到给定文本字符串本身,字体大小和字体系列的文本大小。

看起来getMeasuredWidth可以工作,除了必须在该函数返回值之前将字符串加载到页面上。就我而言,我只需要计算大小即可;否则该文本将不会在页面上显示出来(标记中的文本成为图像)。

有没有办法做到这一点?

var bmp = BitmapFactory.create(200);
bmp.dispose(function (b) {
try {
  b.drawRect(
    "100,34", // size
    '0,0', // upper-left coordinate
    KnownColors.Black, // border color
    KnownColors.Cornsilk // fill color
  );

  b.writeText(
    "Parking",
    "2,25",
    { color: KnownColors.Black, size: 8, name: 'fontawesome-webfont', });

...

在上面的代码中,边界矩形的宽度“ 100”实际上表示具有少量填充的“ Parking”的位宽。我想要做的是计算矩形的高度和宽度,而不是对其进行硬编码。

1 个答案:

答案 0 :(得分:1)

尝试此操作,在单击按钮时无需将标签添加到页面即可查找标签大小

export function onFindButtonTap(args: EventData) {
 const button = <any>args.object;

 const label = new Label();
 label.text = "Hello, found my size?"
 label.fontSize = 20;

 (<any>label)._setupAsRootView(button._context);
 label.onLoaded();
 label.measure(0, 0);
 console.log(`Width : ${label.getMeasuredWidth()} x Height : ${label.getMeasuredHeight()}`);
}

Playground Sample

注意:我还没有机会在iOS上进行测试,请问是否遇到任何问题。