Центрирование узла по вертикали в горизонтальном положении ASStackLayout
Мне интересно, как правильно центрировать textNode внутри вертикального ASSStackNode, который находится внутри горизонтального ASStackNode без установки каких-либо размеров?
Я пробовал разные варианты с ASCenterLayout / ASRelativeLayout вокруг вертикального расположения, flewGrow, flexShrink. Единственный возможный способ, которым я вижу, - это статическое расположение с минимальной высотой вокруг вертикального расположения Но хочу найти другой способ.
Изображения для лучшей картины:
Моя структура макета:
Что я получаю, когда одно из текстовых полей пусто:
Что я хочу увидеть:
1 ответ
Если ваш ASTextNode пуст или ноль. Это не значит, что узел не существует. Если вы хотите скрыть узел, если он пустой, вы должны написать для него простую логику. Для исключения это Спец из расчета. Что я использую на ADK1.9:
- (ASLayoutSpec *)layoutSpecThatFits: (ASSizeRange)constrainedSize
{
NSMutableArray *arrayOfChildren = [NSMutableArray new];
[arrayOfChildren insertObject:self.titleNode];
if (self.textNode.text.length > 0) {
[arrayOfChildren insertObject:self.textNode];
}
ASStackLayoutSpec *verticalElementCoreStack = [ASStackLayoutSpec stackLayoutSpecWithDirection:ASStackLayoutDirectionVertical spacing:8
justifyContent:ASStackLayoutJustifyContentCenter alignItems:ASStackLayoutAlignItemsStretch
children:arrayOfChildren];
return verticalElementCoreStack;
}