我将标签作为属性字符串添加到我的iPhone应用中。我想使用两个属性; Ti.UI.ATTRIBUTE_BASELINE_OFFSET
和Ti.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模拟器上使用调试模式时,我可以看到标签的高度被调整为第一个属性(基线偏移)。然而,字体属性在标签的顶部添加了一些额外的填充,这足以将标签容器外的最后一行文本推送,然后截断。
作为一种解决方法,我尝试手动设置标签高度,但这没有效果。
有谁知道如何停止截断并在标签中显示我的全文?
答案 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);
我不知道你的文字字符串/用例,所以不能确定,但这应该符合你的需要