我知道这个问题以各种形式出现过,但没有一个解决方案适合我...... 我正在使用Titanium API 2.1.3,并为iPhone构建。
我使用了很多常见的JS,所以我有这个:
exports.Header = function(title){
var l = Ti.UI.createLabel({
text: title,
height: 'auto',
textAlign: 'left',
color: '#989898',
font: {fontSize: exports.defaultFontSize+10, fontFamily: exports.defaultFont, fontWeight: 'bold'}
});
return l;
};
我正在这样称呼标签:
var qLabel = gui.Header(question);
qLabel.top = 5;
qLabel.left = 10;
qLabel.right = 10;
qLabel.color = "#3B3B3B";
qLabel.font = {fontSize: gui.defaultFontSize+4, fontWeight: 'bold'};
到目前为止,我已经尝试了各种各样的东西来获得标签的高度,例如:
qLabel.toImage().height // this returns auto
qLabel.getRect().height // this returns 0
与getSize()。height(也返回0)或getHeight()(返回auto)相同。我先尝试将它添加到父视图中,然后读取高度,但没有...我做的最后一件事就是:
var qqv = Ti.UI.createView({ width: 'auto', height: 'auto' });
qqv.add(qLabel);
qLabel.show();
Ti.API.info(qLabel.rect.height);
Ti.API.info(qLabel.size.height);
Ti.API.info(qqv.rect.height);
Ti.API.info(qqv.size.height);
他们都返回0。
我现在非常绝望,我不知道这个问题是因为我正在使用的API版本还是其他......感谢任何帮助。
修改 经过一些反复试验,我发现了
qLabel.toImage().height;
返回某些号码,但它似乎不是正确的高度。
答案 0 :(得分:5)
您可以使用postlayout event
这是获取标签高度的示例代码
label.addEventListener('postlayout', function(e) {
var label_height = e.source.rect.height;
alert(label_height);
});
希望有所帮助。 :)
答案 1 :(得分:0)
我遇到了同样的问题而我并不想在每个元素上使用postlayout事件。相反,我使用了size属性,它是一个只读属性,包含元素的实际大小。我将此与postlayout事件中的事件数据进行了比较,并给出了完全相同的值。
因此,如果您想获得元素的高度,我建议您使用^dim( \. )?(\\)?t[0-9]+$
而不是一直添加事件侦听器。这对于你的应用程序的性能也会有很好的效果,因为postlayout事件将被激活很多。