使用具有组合属性的属性字符串隐藏标签的最后一行

Use attributed string with combined attributes hides last line of label

我正在将标签作为属性字符串添加到我的 iPhone 应用程序。我想使用两个属性; Ti.UI.ATTRIBUTE_BASELINE_OFFSETTi.UI.ATTRIBUTE_FONT.

当我分开使用这些属性时,它们都能正常工作。但是当我将它们组合成一个属性字符串时,我的最后一行文本消失并被截断。请参阅下面的代码:

var attributedString = Ti.UI.createAttributedString({
    text: text,
    attributes: [
        {
            type: Ti.UI.ATTRIBUTE_BASELINE_OFFSET,
            value: attributeBaseLineOffset,
            range: [0, text.length]
        },
        {
            type: Ti.UI.ATTRIBUTE_FONT,
            value: {fontFamily: "Dosis-Bold", fontSize: "16dp"},
            range: [5,10]
        }
    ]
});

当我在 iOS 模拟器上使用调试模式时,我可以看到标签的高度已调整为第一个属性(基线偏移)。然而,字体属性在标签的顶部添加了一些额外的填充,这足以将最后一行文本推到标签容器之外,然后它被截断。

作为解决方法,我尝试手动设置标签高度,但这没有效果。

有谁知道如何停止截断并在标签中显示我的全文?

这很容易修复。不取决于字符串长度,选择实际上是使用 Ti.UI.Label 还是 Ti.UI.TextArea。当然,如果需要,您始终可以在任何地方使用 TextArea 来代替 Label。

查看以下示例,它应该使用 TextArea 而不是 Label 来处理您要查找的内容。

var text =  'Bacon ipsum dolor Appcelerator Titanium rocks! sit amet fatback    leberkas salami sausage tongue strip steak.';
var attributedString = Ti.UI.createAttributedString({
text: text,
attributes: [
            {
                    type: Ti.UI.ATTRIBUTE_BASELINE_OFFSET,
                    value: 25,
                    range: [0, text.length]
            },
            {
                    type: Ti.UI.ATTRIBUTE_FONT,
                    value: {fontFamily: "Dosis-Bold", fontSize: "16dp"},
                    range: [5,10]
        }
    ]
});

var label = Titanium.UI.createTextArea({
    left: 20,
    right: 20,
    height: Titanium.UI.SIZE,
        borderWidth:1,
        borderColor: "#ececec",
    attributedString: attributedString
});

$.theView.add(label);

我不知道你的文本字符串/用例所以不能确定,但​​这应该符合你的需要