如何获得具有自动高度的标签的实际高度

Sar*_*h R 2 javascript label titanium uilabel titanium-mobile

我知道这个问题之前以各种形式出现过,但没有一个解决方案适合我...我正在使用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;
};
Run Code Online (Sandbox Code Playgroud)

而我正在这样称呼标签:

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'};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经尝试了各种各样的东西来获得标签的高度,例如:

qLabel.toImage().height // this returns auto
qLabel.getRect().height // this returns 0
Run Code Online (Sandbox Code Playgroud)

与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);
Run Code Online (Sandbox Code Playgroud)

他们都返回0.

我现在非常绝望,我不知道这个问题是因为我正在使用的API版本还是其他任何帮助...

编辑: 经过一些试验和错误,我发现了

qLabel.toImage().height;
Run Code Online (Sandbox Code Playgroud)

返回一些数字,然而,它似乎不是正确的高度.

Aje*_*rya 5

您可以使用postlayout事件

这是获取标签高度的示例代码

label.addEventListener('postlayout', function(e) {
    var label_height = e.source.rect.height;
    alert(label_height);
});
Run Code Online (Sandbox Code Playgroud)

希望有所帮助.:)