Изменение видимого свойства иногда изменяет центральную позицию вида (возможная ошибка?)
У меня есть 3 (представление загрузчика, блокировщика и отладки) скрытых представлений (touchEnabled и visible установлены в false, а zIndex в 1) над основным представлением (zIndex = 2).
У каждого 'over' представления есть этот метод:
$.debugView.show = function() {
$.debugView.touchEnabled = $.debugView.visible = true;
$.debugView.zIndex = 3;
};
$.debugView.hide = function() {
$.debugView.touchEnabled = $.debugView.visible = false;
$.debugView.zIndex = 1;
};
На этом экране скрыты 3 вида "поверх":
Теперь я открываю "представление отладки", но, ИНОГДА, похоже, что он меняет позиции (как будто центр находится в верхнем левом углу, а не в центре устройства).
Вместо требуемого результата:
Если я использую непрозрачность вместо свойства visible, он будет работать правильно.
Это может быть ошибка SDK, верно?
<Alloy>
<Window>
<View id="content"/>
<View id="locker"/>
<View id="loader"/>
<View id="debugView"/>
</Window>
</Alloy>
Все эти 4 вида не имеют ширины или высоты (поэтому по умолчанию используется Ti.UI.FILL)
1 ответ
Я заметил это тоже с совершенно другой реализацией. У меня был только один вид, который я включил в окно.
Видимо, левый и верхний вычисления не были выполнены должным образом, если элементы скрыты.
Что я сделал, чтобы решить эту проблему, так это жестко закодировать левую / верхнюю позицию, вычислив левую позицию, используя это:
$.content.left = (Ti.Platform.displayCaps.platformWidth - 75) / 2;
Где в моем случае 75 - это ширина элемента, так что в вашем случае она будет больше. Вы можете сделать то же самое для высоты.
Теперь это решение для iOS. На Android вам нужно учитывать DPI при расчете.
Я думаю, что это ошибка, хотя это решение отлично работает для меня. Я рекомендую посмотреть на JIRA и посмотреть, является ли это известной проблемой, а если нет, поднять ее с очень конкретным объяснением проблемы, предпочтительно с воспроизводимым случаем, поставляемым в виде приложения. Классика поможет больше всего. И если это не воспроизводится в классике, это может быть проблема сплава.