2012-10-22 2 views
2

이 질문은 이전에 여러 가지 형태로 나타 났지만 해결책은 없었습니다 ... 나는 티타늄 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()와 같은 일을 높이 (이뿐만 아니라 0을 반환) 오. r getHeight() (자동 복귀). 내가 먼저 부모보기에 추가 한 다음 높이를 읽고,하지만 아무것도 ... 내가 한 마지막 일이 없었다 시도했다 : 그들은 모두 내가 0

이야 반환

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); 

이 시점에서 절망적 인 상태가되어 버렸습니다. API 버전으로 인해이 문제가 발생했는지 여부는 알 수 없습니다.

편집 : 약간의 시행 착오 후 가, 내가

qLabel.toImage().height; 

반환 일부 수는 있지만, 올바른 높이가 될 것 같지 않습니다 것으로 나타났습니다.

+0

현재 어떤 플랫폼에서 작업하고 있습니까? iPhone, iPad 또는 Android? –

+0

나는 iPhone을 위해 일하고있다. 질문에 편집했습니다. –

답변

5

현재

postlayout event 도움이

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

희망 레이블 높이 얻을 것이다 샘플 코드 사용할 수 있습니다. :)

+0

그것은 작동합니다! 정말 고맙습니다. 티타늄은 때로는 정말 이상 할 수 있습니다. –

+0

나중에 언젠가 ... 그러나 그것은 도시에서 최고 다. : D 행복한 코딩 .. –

+0

내가 이전 요소에 따라 각 요소를 배치하고 싶다면 나는 매번 레이아웃 이후 이벤트를 사용할 필요가 있느냐 ?? – Tony

0

동일한 문제가 발생하여 모든 단일 요소에서 postlayout 이벤트를 사용하고 싶지 않습니다. 대신 읽기 전용이고 요소의 실제 크기를 포함하는 size 속성을 사용했습니다. 나는 이것을 postlayout 이벤트의 이벤트 데이터와 비교했으며 정확한 값을 주었다.

요소의 높이를 얻으려는 경우 항상 이벤트 수신기를 추가하는 대신 $.label1.size.height을 사용하는 것이 좋습니다. 또한 postlayout 이벤트가 많이 발생하기 때문에 앱의 성능을 향상시킬 수 있습니다.

관련 문제