3

この質問は以前にもさまざまな形で出てきたことを認識していますが、どの解決策もうまくいきませんでした...私は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;

何らかの数値を返しますが、正しい高さではないようです。

4

2 に答える 2

5

レイアウト後のイベントを使用できます

ラベルの高さを取得するサンプル コードを次に示します。

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

それが役に立ったことを願っています。:)

于 2012-10-25T07:29:51.453 に答える