Добавление вида со 100% высотой в Titanium не работает на iOS

У меня возникла проблема с отображением, когда я пытаюсь добавить вид со 100% высотой в Titanium — он отображается правильно на Android, но не на iOS. Вот упрощенный код:

Ti.UI.setBackgroundColor('#000');

var win = Ti.UI.createWindow({  
    title:'win',
    backgroundColor:'#fff'
});

var s = Ti.UI.createView({
    width:'100%',
    height:'100%',
    backgroundColor:'red',
    layout: 'horizontal'
});

var r = Ti.UI.createView({
    backgroundColor:'yellow',
    width:300,
    height:'100%' // problem
})

s.add(r);

win.add(s);
win.open();

Результат на Android (правильный): Android

Результат на iPad: iPad

Это работает, если я устанавливаю высоту на конечное число, но я хочу, чтобы представление покрывало всю высоту. Как я могу это сделать и почему 100% высота не работает на iOS?


person lzm    schedule 11.11.2011    source источник
comment
обратите внимание, платформа титана не предназначена для создания приложения только один раз. Лучший способ создавать приложения — создавать 1 серверную часть, а для обеих платформ создавать разные пользовательские интерфейсы, чтобы они лучше соответствовали целям ОС. Для этого на iPad вы также можете использовать разделенное окно: developer.appcelerator.com/apidoc/mobile/latest/   -  person Rene Pot    schedule 11.11.2011


Ответы (1)


Вероятно, это связано с добавлением view к view. Если вы добавите yellow view к window и присвоите zIndex обоим представлениям, все будет работать правильно.

Для выравнивания по левому краю следует использовать left: 0;, а не layout: 'horizontal', так как согласно документации свойство макета не существует: http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.Window-object

var s = Ti.UI.createView({
    width:'100%',
    height:'100%',
    backgroundColor:'red',
    zIndex: 1
});

var r = Ti.UI.createView({
    backgroundColor:'yellow',
    width:300,
    height:'100%', // no problem
    zIndex: 2,
    left: 0
});

win.add(r);
person Rene Pot    schedule 11.11.2011
comment
Желтое представление появляется в центре с вашим предложением. Если я добавлю layout:'horizontal' в окно, ничего не появится. - person lzm; 11.11.2011
comment
добавить: left: 0, или право на ваше усмотрение. По умолчанию он центрирует представление или все, что вы добавляете. С верхним/нижним/левым/правым стилем css вы можете правильно расположить его. Это и с высотой и с шириной дело - person Rene Pot; 11.11.2011
comment
Кроме того, свойство layout не отображается в документации: developer .appcelerator.com/apidoc/mobile/latest/. Я обновил свой пост, чтобы удовлетворить этот вопрос тоже - person Rene Pot; 11.11.2011