Изменение видимого свойства иногда изменяет центральную позицию вида (возможная ошибка?)

У меня есть 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 и посмотреть, является ли это известной проблемой, а если нет, поднять ее с очень конкретным объяснением проблемы, предпочтительно с воспроизводимым случаем, поставляемым в виде приложения. Классика поможет больше всего. И если это не воспроизводится в классике, это может быть проблема сплава.

Другие вопросы по тегам