使用具有组合属性的属性字符串隐藏标签的最后一行
Use attributed string with combined attributes hides last line of label
我正在将标签作为属性字符串添加到我的 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 模拟器上使用调试模式时,我可以看到标签的高度已调整为第一个属性(基线偏移)。然而,字体属性在标签的顶部添加了一些额外的填充,这足以将最后一行文本推到标签容器之外,然后它被截断。
作为解决方法,我尝试手动设置标签高度,但这没有效果。
有谁知道如何停止截断并在标签中显示我的全文?
这很容易修复。不取决于字符串长度,选择实际上是使用 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);
我不知道你的文本字符串/用例所以不能确定,但这应该符合你的需要
我正在将标签作为属性字符串添加到我的 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 模拟器上使用调试模式时,我可以看到标签的高度已调整为第一个属性(基线偏移)。然而,字体属性在标签的顶部添加了一些额外的填充,这足以将最后一行文本推到标签容器之外,然后它被截断。
作为解决方法,我尝试手动设置标签高度,但这没有效果。
有谁知道如何停止截断并在标签中显示我的全文?
这很容易修复。不取决于字符串长度,选择实际上是使用 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);
我不知道你的文本字符串/用例所以不能确定,但这应该符合你的需要