Возможно ли определить ширину строки в Appcelerator?

#string #appcelerator

#строка #appcelerator

Вопрос:

Я пытаюсь определить длину строки, чтобы я мог динамически размещать некоторые метки. В iOS я бы использовал:
CGSize size = [string sizeWithFont:font];
Возможно ли это сделать с помощью API Appcelerator или есть другой способ сделать этот тип динамического макета?

Ответ №1:

Если вы создаете метки с шириной ‘auto’, после того, как они были созданы, вы можете получить доступ к их фактической ширине и соответствующим образом расположить любые другие метки:

 var window = Ti.UI.createWindow();

var label = Ti.UI.createLabel({
    text: 'This is a test string',
    width: 'auto',
    color: '#FFF',
    left: 0,
    top: 0
});

var labelWidth = label.width;

Ti.API.info(labelWidth);

// Dynamically position the second label
var secondLabel = Ti.UI.createLabel({
    text: 'Second label',
    width: 100,
    left: labelWidth   10,
    top: 0,
    color: '#FFF'
});

window.add(label);
window.add(secondLabel);

window.open();
  

Это не очень элегантно, но работает.

Комментарии:

1. Похоже, у меня это не работает. Это регистрируется как «auto», и вторая метка рисуется поверх первой. Я должен был упомянуть, что я пытаюсь это сделать с mobilesdk 1.7, если это имеет значение.

2. Извините, это был плохой пример, хотя принцип верный. Я обновил пример кода, попробуйте это — версия не должна иметь значения, хотя я использую 1.6.2.

3. Вероятно, это связано с тем, что вам нужно добавить метки в окна перед их размещением.

4. Тем не менее, у меня тоже есть проблемы с этим. Appcelerator может быть привередливым.

5. Ах, хорошо. Я использовал его только на iPhone, когда отвечал, приятно знать!

Ответ №2:

Комментарии:

1. макет: «горизонтальный» был ключевым. Спасибо, пропустил это в кухонной раковине.