Цитата:
В том же флексе, на сколько я знаю, этот процесс разбит на несколько фаз: пересчет размеров, обновление дисплей листа, перерисовка (могу ошибаться, но что-то типа этого) и это не из-за простого удобства или какой-то религии, видимо, так сделано.
|
Если точнее, то на 4-ре. createChildren (создание детишек), measure (расчет дефолтных размеров), commitProperties (расчет свойств), updateDisplayList (позиционирование и отрисовка).
Добавлено через 11 часов 21 минуту
Во флексовом LayoutManager используется такая последовательность для компонентов которые сообщили об изменениях, т.е. вызвали invalidateProperties() и/или invalidateSize() и/или invalidateDisplayList:
1. Сверху-вниз вызывается validateProperties (commitProperties) – компонент проверяет свои свойства и корректирует в случае необходимости.
2. Снизу-вверх вызывается validateSize (measure) – компонент рассчитывает минимальные размеры. (Эти размеры еще ничего не значат).
3. Сверху вниз вызывается validateDisplayList (updateDisplayList) – компонент отрисовывается и позиционирует своих детей. На этом этапе компоненту будут предложены либо размеры которые ему задаст его контейнер, либо те, которые он рассчитал.
Добавлено через 11 часов 26 минут
Цитата:
У меня Меню получает Объект стилей от, скажем, Окна. У Меню есть элементы двух типов - Кнопки и Панель. Получив стиль, Меню находит в нем Объекты для Кнопок и для Панели, и отдает в их сеттеры. Выполнение кода в сеттере Меню останавливается, пока не выполнится код в сеттере Кнопки. Кнопка проверяет, нет ли в полученном Объекте стиля для Лейбла, и если есть - вызывает сеттер стиля у Лейбла.
|
А как вы задаете глобальные стили? Например все леблы должны выглядеть одинаково. Стили будут дублироваться? Получается, что стили должны дублировать структуру вида?