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

时间:2016-02-11 09:05:32

标签: ios appcelerator appcelerator-titanium

我将标签作为属性字符串添加到我的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模拟器上使用调试模式时,我可以看到标签的高度被调整为第一个属性(基线偏移)。然而,字体属性在标签的顶部添加了一些额外的填充,这足以将标签容器外的最后一行文本推送,然后截断。

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

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

1 个答案:

答案 0 :(得分:2)

这是一个简单的解决方法。根据字符串长度的不同,选择是否使用Ti.UI.Label vs 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);

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